pub struct RemoteAuthProvider { /* private fields */ }Expand description
Represents a Remote OAuth authentication provider integrated with the MCP server.
This struct defines how the MCP server interacts with an external identity provider
that supports Dynamic Client Registration (DCR).
The RemoteAuthProvider enables enterprise-grade authentication by leveraging
external OAuth infrastructure, while maintaining secure token verification and
identity validation within the MCP server.
Implementations§
Source§impl RemoteAuthProvider
impl RemoteAuthProvider
pub fn new( auth_server_meta: AuthorizationServerMetadata, protected_resource_meta: OauthProtectedResourceMetadata, token_verifier: Box<dyn OauthTokenVerifier>, required_scopes: Option<Vec<String>>, ) -> Self
pub async fn with_remote_metadata_url( authorization_server_metadata_url: &str, protected_resource_meta: OauthProtectedResourceMetadata, token_verifier: Box<dyn OauthTokenVerifier>, required_scopes: Option<Vec<String>>, ) -> Result<Self, Error>
Trait Implementations§
Source§impl AuthProvider for RemoteAuthProvider
impl AuthProvider for RemoteAuthProvider
Source§fn protected_resource_metadata_url(&self) -> Option<&str>
fn protected_resource_metadata_url(&self) -> Option<&str>
Returns the absolute URL of this resource’s OAuth 2.0 Protected Resource Metadata document. Read more
fn verify_token<'life0, 'async_trait>(
&'life0 self,
access_token: String,
) -> Pin<Box<dyn Future<Output = Result<AuthInfo, AuthenticationError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn required_scopes(&self) -> Option<&Vec<String>>
fn required_scopes(&self) -> Option<&Vec<String>>
Returns an optional list of scopes required to access this resource.
If this function returns
Some(scopes), the authenticated user’s token
must include all of the listed scopes.
If any are missing, the request will be rejected with a 403 Forbidden response.Source§fn handle_request<'life0, 'life1, 'async_trait>(
&'life0 self,
request: Request<&'life1 str>,
state: Arc<McpAppState>,
) -> Pin<Box<dyn Future<Output = Result<Response<GenericBody>, TransportServerError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle_request<'life0, 'life1, 'async_trait>(
&'life0 self,
request: Request<&'life1 str>,
state: Arc<McpAppState>,
) -> Pin<Box<dyn Future<Output = Result<Response<GenericBody>, TransportServerError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Handles an incoming HTTP request for this authentication provider. Read more
Source§fn auth_endpoints(&self) -> Option<&HashMap<String, OauthEndpoint>>
fn auth_endpoints(&self) -> Option<&HashMap<String, OauthEndpoint>>
Returns the configured OAuth endpoints for this provider. Read more
Source§fn endpoint_type(&self, request: &Request<&str>) -> Option<&OauthEndpoint>
fn endpoint_type(&self, request: &Request<&str>) -> Option<&OauthEndpoint>
Returns the
OauthEndpoint associated with the given request path. Read morefn validate_allowed_methods( &self, endpoint: &OauthEndpoint, method: &Method, ) -> Option<Response<GenericBody>>
Auto Trait Implementations§
impl Freeze for RemoteAuthProvider
impl !RefUnwindSafe for RemoteAuthProvider
impl Send for RemoteAuthProvider
impl Sync for RemoteAuthProvider
impl Unpin for RemoteAuthProvider
impl !UnwindSafe for RemoteAuthProvider
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more