Class IdTokenClaimsValidator
java.lang.Object
io.micronaut.security.oauth2.client.IdTokenClaimsValidator
- All Implemented Interfaces:
GenericJwtClaimsValidator,JwtClaimsValidator
@Requires(property="micronaut.security.authentication",value="idtoken") @Requires(property="micronaut.security.token.jwt.claims-validators.openid-idtoken",notEquals="false")
@Singleton
public class IdTokenClaimsValidator
extends Object
implements GenericJwtClaimsValidator
For
AuthenticationMode.IDTOKEN authentication mode performs the following verification as described in the OpenID Connect Spec.
- The Issuer Identifier for the OpenID Provider (which is typically obtained during Discovery) MUST exactly match the value of the iss (issuer) Claim.
- The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified by the iss (issuer) Claim as an audience. The aud (audience) Claim MAY contain an array with more than one element.
- If the ID Token contains multiple audiences, the Client SHOULD verify that an azp Claim is present.
- If an azp (authorized party) Claim is present, the Client SHOULD verify that its client_id is the Claim Value.
* @see ID Token Validation- Since:
- 2.2.0
- Author:
- Sergio del Amo
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final Stringprotected static final org.slf4j.Loggerprotected final Collection<OauthClientConfiguration> -
Constructor Summary
ConstructorsConstructorDescriptionIdTokenClaimsValidator(Collection<OauthClientConfiguration> oauthClientConfigurations) -
Method Summary
Modifier and TypeMethodDescriptionparseAudiences(JwtClaims claims) parseAzpClaim(JwtClaims claims) parseClaim(JwtClaims claims, String claimName) parseClaimList(JwtClaims claims, String claimName) parseClaimString(JwtClaims claims, String claimName) parseIssuerClaim(JwtClaims claims) booleanprotected booleanvalidateAzp(JwtClaims claims, String clientId, List<String> audiences) protected booleanvalidateIssuerAudienceAndAzp(JwtClaims claims, String iss, List<String> audiences) protected booleanvalidateIssuerAudienceAndAzp(JwtClaims claims, String iss, List<String> audiences, OauthClientConfiguration oauthClientConfiguration) protected booleanvalidateIssuerAudienceAndAzp(JwtClaims claims, String iss, List<String> audiences, String clientId, OpenIdClientConfiguration openIdClientConfiguration)
-
Field Details
-
LOG
protected static final org.slf4j.Logger LOG -
AUTHORIZED_PARTY
- See Also:
-
oauthClientConfigurations
-
-
Constructor Details
-
IdTokenClaimsValidator
- Parameters:
oauthClientConfigurations- OpenId client configurations
-
-
Method Details
-
validate
public boolean validate(@NonNull JwtClaims claims, @Nullable io.micronaut.http.HttpRequest<?> request) - Specified by:
validatein interfaceJwtClaimsValidator- Parameters:
claims- JWT Claimsrequest- HTTP request- Returns:
- whether the JWT claims pass validation.
-
parseIssuerClaim
-
parseClaim
-
parseClaimString
-
parseClaimList
-
parseAudiences
-
validateIssuerAudienceAndAzp
protected boolean validateIssuerAudienceAndAzp(@NonNull JwtClaims claims, @NonNull String iss, @NonNull List<String> audiences) - Parameters:
claims- JWT Claimsiss- Issuer claimaudiences- aud claim as a list of string- Returns:
- true if an OAuth 2.0 client issuer matches the iss claim, any of the audiences in the aud claim matches the OAuth 2.0 client_id and for multiple audiencies the azp claim is present and matches OAuth 2.0 client_id
-
validateIssuerAudienceAndAzp
protected boolean validateIssuerAudienceAndAzp(@NonNull JwtClaims claims, @NonNull String iss, @NonNull List<String> audiences, @NonNull OauthClientConfiguration oauthClientConfiguration) - Parameters:
claims- JWT Claimsiss- Issuer claimaudiences- aud claim as a list of stringoauthClientConfiguration- OAuth 2.0 client configuration- Returns:
- true if the OAuth 2.0 client OpenID issuer matches the iss claim, any of the audiences in the aud claim matches the OAuth 2.0 client_id and for multiple audiencies the azp claim is present and matches OAuth 2.0 client_id
-
validateIssuerAudienceAndAzp
protected boolean validateIssuerAudienceAndAzp(@NonNull JwtClaims claims, @NonNull String iss, @NonNull List<String> audiences, @NonNull String clientId, @NonNull OpenIdClientConfiguration openIdClientConfiguration) - Parameters:
claims- JWT Claimsiss- Issuer claimaudiences- aud claim as a list of stringclientId- OAuth 2.0 client_idopenIdClientConfiguration- OpenID OAuth 2.0 client configuration- Returns:
- true if the OAuth 2.0 client OpenID issuer matches the iss claim, any of the audiences in the aud claim matches the OAuth 2.0 client_id and for multiple audiencies the azp claim is present and matches OAuth 2.0 client_id
-
parseAzpClaim
-
validateAzp
protected boolean validateAzp(@NonNull JwtClaims claims, @NonNull String clientId, @NonNull List<String> audiences) - Parameters:
claims- JWT ClaimsclientId- OAuth 2.0 client IDaudiences- audiences specified in the JWT Claims- Returns:
- true for single audiences, for multiple audiences returns true azp claim is present and matches OAuth 2.0 client_id
-