--- title: bearer sidebarTitle: bearer --- # `fastmcp.server.auth.providers.bearer` ## Classes ### `JWKData` JSON Web Key data structure. ### `JWKSData` JSON Web Key Set data structure. ### `RSAKeyPair` **Methods:** #### `generate` ```python generate(cls) -> 'RSAKeyPair' ``` Generate an RSA key pair for testing. **Returns:** - (private_key_pem, public_key_pem) #### `create_token` ```python create_token(self, subject: str = 'fastmcp-user', issuer: str = 'https://fastmcp.example.com', audience: str | list[str] | None = None, scopes: list[str] | None = None, expires_in_seconds: int = 3600, additional_claims: dict[str, Any] | None = None, kid: str | None = None) -> str ``` Generate a test JWT token for testing purposes. **Args:** - `private_key_pem`: RSA private key in PEM format - `subject`: Subject claim (usually user ID) - `issuer`: Issuer claim - `audience`: Audience claim - can be a string or list of strings (optional) - `scopes`: List of scopes to include - `expires_in_seconds`: Token expiration time in seconds - `additional_claims`: Any additional claims to include - `kid`: Key ID for JWKS lookup (optional) **Returns:** - Signed JWT token string ### `BearerAuthProvider` Simple JWT Bearer Token validator for hosted MCP servers. Uses RS256 asymmetric encryption by default but supports all JWA algorithms. Supports either static public key or JWKS URI for key rotation. Note that this provider DOES NOT permit client registration or revocation, or any OAuth flows. It is intended to be used with a control plane that manages clients and tokens. **Methods:** #### `load_access_token` ```python load_access_token(self, token: str) -> AccessToken | None ``` Validates the provided JWT bearer token. **Args:** - `token`: The JWT token string to validate **Returns:** - AccessToken object if valid, None if invalid or expired #### `verify_token` ```python verify_token(self, token: str) -> AccessToken | None ``` Verify a bearer token and return access info if valid. This method implements the TokenVerifier protocol by delegating to our existing load_access_token method. **Args:** - `token`: The JWT token string to validate **Returns:** - AccessToken object if valid, None if invalid or expired #### `get_client` ```python get_client(self, client_id: str) -> OAuthClientInformationFull | None ``` #### `register_client` ```python register_client(self, client_info: OAuthClientInformationFull) -> None ``` #### `authorize` ```python authorize(self, client: OAuthClientInformationFull, params: AuthorizationParams) -> str ``` #### `load_authorization_code` ```python load_authorization_code(self, client: OAuthClientInformationFull, authorization_code: str) -> AuthorizationCode | None ``` #### `exchange_authorization_code` ```python exchange_authorization_code(self, client: OAuthClientInformationFull, authorization_code: AuthorizationCode) -> OAuthToken ``` #### `load_refresh_token` ```python load_refresh_token(self, client: OAuthClientInformationFull, refresh_token: str) -> RefreshToken | None ``` #### `exchange_refresh_token` ```python exchange_refresh_token(self, client: OAuthClientInformationFull, refresh_token: RefreshToken, scopes: list[str]) -> OAuthToken ``` #### `revoke_token` ```python revoke_token(self, token: AccessToken | RefreshToken) -> None ```