Interface ThirdPartyJWTGrantHandler
-
- All Superinterfaces:
GrantHandler,JWTGrantHandler,Lifecycle
@ThreadSafe public interface ThirdPartyJWTGrantHandler extends JWTGrantHandler
Service Provider Interface (SPI) for handling JSON Web Token (JWT) assertion grants issued by a third-party security token service. Returns the matchingauthorisationon success. Must throw aGeneralExceptionwith aninvalid_granterror code if the JWT assertion is invalid.The passed JWT assertion can be an instance of:
SignedJWT-- Signed or MAC protected with JWS;EncryptedJWT-- Encrypted with JWE;JWEObject-- Signed or MAC protected with JWS, then encrypted with JWE.
The handler should not specify access token lifetimes that exceed the validity period of the JWT assertion by a significant period. The issue of refresh tokens is not permitted. Clients can refresh an expired access token by requesting a new one using the same assertion, if it is still valid, or with a new assertion.
Implementations must be thread-safe.
Related specifications:
- Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants (RFC 7521), section 4.1.
- JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants (RFC 7523), sections 2.1, 3 and 3.1.
-
-
Field Summary
-
Fields inherited from interface com.nimbusds.openid.connect.provider.spi.grants.JWTGrantHandler
GRANT_TYPE
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description ThirdPartyAssertionAuthorizationprocessThirdPartyGrant(com.nimbusds.jose.JOSEObject jwtAssertion, com.nimbusds.oauth2.sdk.Scope scope, com.nimbusds.oauth2.sdk.id.ClientID clientID, boolean confidentialClient, com.nimbusds.openid.connect.sdk.rp.OIDCClientMetadata clientMetadata)Handles a JWT bearer assertion grant issued by a third-party security token service (STS).-
Methods inherited from interface com.nimbusds.openid.connect.provider.spi.grants.GrantHandler
getGrantType
-
-
-
-
Method Detail
-
processThirdPartyGrant
ThirdPartyAssertionAuthorization processThirdPartyGrant(com.nimbusds.jose.JOSEObject jwtAssertion, com.nimbusds.oauth2.sdk.Scope scope, com.nimbusds.oauth2.sdk.id.ClientID clientID, boolean confidentialClient, com.nimbusds.openid.connect.sdk.rp.OIDCClientMetadata clientMetadata) throws com.nimbusds.oauth2.sdk.GeneralException
Handles a JWT bearer assertion grant issued by a third-party security token service (STS). The grant handler must verify the JWT assertion, using a previously agreed method to resolve the client's MAC or signature key.The following client authentication / identification cases may be handled:
- Confidential client:
If the client is confidential and has provided valid
authentication (client_secret_basic, client_secret_post,
client_secret_jwt or private_key_jwt) the
confidentialClientflag will betrue. The client_id and metadata arguments will be set. - Public client:
If the client is public and has a provided its registered
client_idusing the optional token request parameter, theconfidentialClientflag will befalseand the client metadata will be set. - Handler must resolve client_id from JWT claims:
If no client authentication or
client_idis passed with the token request, the client information arguments will benulland theconfidentialClientflag will befalse. The grant handler must resolve theclient_idfor the authorisation result from claims of the JWT assertion. If such a use case is not supported or permitted the grant handler should throw aGeneralExceptionwith aninvalid_requesterror.
If the JWT assertion is invalid the handler must throw a
GeneralExceptionwith aninvalid_granterror code.If the requested scope is invalid, unknown, malformed, or exceeds the scope granted by the resource owner the handler must throw a
GeneralExceptionwith aninvalid_scopeerror code.- Parameters:
jwtAssertion- The JWT assertion, to be verified / decrypted by the handler. Can be a signed JWT, an encrypted JWT, or a signed and encrypted (nested) JWT. Notnull.scope- The requested scope,nullif not specified.clientID- The client identifier,nullif not specified or if no client authentication was provided.confidentialClient-trueif the client is confidential and has been authenticated, elsefalse.clientMetadata- The OAuth 2.0 / OpenID Connect client metadata,nullif noclient_idor client authentication was provided.- Returns:
- The authorisation.
- Throws:
com.nimbusds.oauth2.sdk.GeneralException- If the grant is invalid, or another exception was encountered.
- Confidential client:
If the client is confidential and has provided valid
authentication (client_secret_basic, client_secret_post,
client_secret_jwt or private_key_jwt) the
-
-