98 if (!Strings.isNullOrEmpty(nonce) && !nonceFromToken.endsWith(nonce)) {
99 LOG.error(
"ID Token has invalid nonce. Expected nonce: " + nonce +
", nonce from token is: " + nonceFromToken);
100 throw new ErrorResponseException(ErrorResponseCode.INVALID_ID_TOKEN_BAD_NONCE);
103 if (!clientId.equalsIgnoreCase(audienceFromToken)) {
105 if (audAsList != null && audAsList.size() == 1) {
106 if (!clientId.equalsIgnoreCase(audAsList.get(0))) {
107 LOG.error(
"ID Token has invalid audience (string list). Expected audience: " + clientId +
", audience from token is: " + audAsList);
108 throw new ErrorResponseException(ErrorResponseCode.INVALID_ID_TOKEN_BAD_AUDIENCE);
113 boolean equalsWithSingleValuedArray = (
"[\"" + clientId +
"\"]").equalsIgnoreCase(audienceFromToken);
114 if (!equalsWithSingleValuedArray) {
115 LOG.error(
"ID Token has invalid audience (single valued array). Expected audience: " + clientId +
", audience from token is: " + audienceFromToken);
116 throw new ErrorResponseException(ErrorResponseCode.INVALID_ID_TOKEN_BAD_AUDIENCE);
121 final Date now =
new Date();
122 if (now.after(expiresAt)) {
123 LOG.error(
"ID Token is expired. (It is after " + now +
").");
124 throw new ErrorResponseException(ErrorResponseCode.INVALID_ID_TOKEN_EXPIRED);
130 throw new ErrorResponseException(ErrorResponseCode.INVALID_ID_TOKEN_BAD_ISSUER);
142 signature = signerWithRefreshedKey.validate(
idToken);
145 LOG.error(
"ID Token signature is invalid.");
146 throw new ErrorResponseException(ErrorResponseCode.INVALID_ID_TOKEN_BAD_SIGNATURE);
151 }
catch (Exception e) {
152 LOG.error(e.getMessage(), e);
153 throw new ErrorResponseException(ErrorResponseCode.INVALID_ID_TOKEN_UNKNOWN);
String getClaimAsString(String key)
Definition: JwtClaimSet.java:55
static final Logger LOG
Definition: Validator.java:29
RSASigner rsaSigner
Definition: Validator.java:34
JwtClaims getClaims()
Definition: JsonWebResponse.java:41
List< String > getClaimAsStringList(String key)
Definition: JwtClaimSet.java:81
RSAPublicKey refetchKey(String jwkUrl, String kid)
Definition: PublicOpKeyService.java:66
String getJwksUri()
Definition: OpenIdConfigurationResponse.java:289
Date getClaimAsDate(String key)
Definition: JwtClaimSet.java:103
final OpenIdConfigurationResponse discoveryResponse
Definition: Validator.java:32
final Jwt idToken
Definition: Validator.java:31
final PublicOpKeyService keyService
Definition: Validator.java:33
boolean validate(Jwt jwt)
Definition: AbstractJwsSigner.java:49
JwtHeader getHeader()
Definition: JsonWebResponse.java:33
static RSASigner createRSASigner(Jwt jwt, OpenIdConfigurationResponse discoveryResponse, PublicOpKeyService keyService)
Definition: Validator.java:62
String getIssuer()
Definition: OpenIdConfigurationResponse.java:156