@@ -185,43 +185,42 @@ public AuthenticationContext authenticate(SignedJWTInfo signedJWTInfo, MessageCo
185
185
"Invalid JWT token" );
186
186
}
187
187
}
188
- if (jwtGeneratedTime != 0 && RevokedJWTDataHolder .getInstance ()
189
- .isRevokedConsumerKeyExists ((String ) signedJWTInfo .getJwtClaimsSet ()
190
- .getClaim (APIMgtGatewayConstants .CLIENT_ID ), jwtGeneratedTime )) {
191
- if (log .isDebugEnabled ()) {
192
- log .debug ("Consumer key retrieved from the jwt token map is in revoked consumer key map." +
193
- " Token: " + GatewayUtils .getMaskedToken (jwtHeader ));
188
+ Object authorizedPartyClaim = signedJWTInfo .getJwtClaimsSet ().getClaim (APIMgtGatewayConstants .AZP_JWT_CLAIM );
189
+ Object entityIdClaim = signedJWTInfo .getJwtClaimsSet ().getClaim (APIMgtGatewayConstants .ENTITY_ID_JWT_CLAIM );
190
+ if (jwtGeneratedTime != 0 && authorizedPartyClaim != null && entityIdClaim != null ) {
191
+ String authorizedParty = (String ) authorizedPartyClaim ;
192
+ String entityId = (String ) entityIdClaim ;
193
+ if (RevokedJWTDataHolder .getInstance ().isRevokedConsumerKeyExists (authorizedParty , jwtGeneratedTime )) {
194
+ if (log .isDebugEnabled ()) {
195
+ log .debug ("Consumer key retrieved from the jwt token map is in revoked consumer key map."
196
+ + " Token: " + GatewayUtils .getMaskedToken (jwtHeader ));
197
+ }
198
+ log .error ("Invalid JWT token. " + GatewayUtils .getMaskedToken (jwtHeader ));
199
+ throw new APISecurityException (APISecurityConstants .API_AUTH_INVALID_CREDENTIALS ,
200
+ "Invalid JWT token" );
194
201
}
195
- log .error ("Invalid JWT token. " + GatewayUtils .getMaskedToken (jwtHeader ));
196
- throw new APISecurityException (APISecurityConstants .API_AUTH_INVALID_CREDENTIALS ,
197
- "Invalid JWT token" );
198
- }
199
- if (jwtGeneratedTime != 0 && signedJWTInfo .getJwtClaimsSet ().getSubject ()
200
- .equals (signedJWTInfo .getJwtClaimsSet ().getClaim (APIMgtGatewayConstants .CLIENT_ID ))
201
- && RevokedJWTDataHolder .getInstance ().isRevokedSubjectEntityConsumerAppExists (
202
- signedJWTInfo .getJwtClaimsSet ().getSubject (), jwtGeneratedTime )) {
203
- // handle user event revocations of app tokens since the 'sub' claim is client id
204
- if (log .isDebugEnabled ()) {
205
- log .debug ("Consumer key retrieved from the jwt token map is in revoked consumer key map." +
206
- " Token: " + GatewayUtils .getMaskedToken (jwtHeader ));
202
+ if (StringUtils .equals (entityId , authorizedParty )
203
+ && RevokedJWTDataHolder .getInstance ().isRevokedSubjectEntityConsumerAppExists (
204
+ entityId , jwtGeneratedTime )) {
205
+ // handle user event revocations of app tokens since the 'sub' claim is client id
206
+ if (log .isDebugEnabled ()) {
207
+ log .debug ("Consumer key retrieved from the jwt token map is in revoked consumer key map."
208
+ + " Token: " + GatewayUtils .getMaskedToken (jwtHeader ));
209
+ }
210
+ log .error ("Invalid JWT token. " + GatewayUtils .getMaskedToken (jwtHeader ));
211
+ throw new APISecurityException (APISecurityConstants .API_AUTH_INVALID_CREDENTIALS , "Invalid JWT token" );
207
212
}
208
- log .error ("Invalid JWT token. " + GatewayUtils .getMaskedToken (jwtHeader ));
209
- throw new APISecurityException (APISecurityConstants .API_AUTH_INVALID_CREDENTIALS ,
210
- "Invalid JWT token" );
211
- }
212
- if (jwtGeneratedTime != 0 && !signedJWTInfo .getJwtClaimsSet ().getSubject ()
213
- .equals (signedJWTInfo .getJwtClaimsSet ().getClaim (APIMgtGatewayConstants .CLIENT_ID ))
214
- && RevokedJWTDataHolder .getInstance ().isRevokedSubjectEntityUserExists (
215
- signedJWTInfo .getJwtClaimsSet ().getSubject (), jwtGeneratedTime )) {
216
- if (log .isDebugEnabled ()) {
217
- log .debug ("User id retrieved from the jwt token map is in revoked user id map." +
218
- " Token: " + GatewayUtils .getMaskedToken (jwtHeader ));
213
+ if (!StringUtils .equals (entityId , authorizedParty ) && RevokedJWTDataHolder .getInstance ()
214
+ .isRevokedSubjectEntityUserExists (entityId , jwtGeneratedTime )) {
215
+ if (log .isDebugEnabled ()) {
216
+ log .debug ("User id retrieved from the jwt token map is in revoked user id map."
217
+ + " Token: " + GatewayUtils .getMaskedToken (jwtHeader ));
218
+ }
219
+ log .error ("Invalid JWT token. " + GatewayUtils .getMaskedToken (jwtHeader ));
220
+ throw new APISecurityException (APISecurityConstants .API_AUTH_INVALID_CREDENTIALS ,
221
+ "Invalid JWT token" );
219
222
}
220
- log .error ("Invalid JWT token. " + GatewayUtils .getMaskedToken (jwtHeader ));
221
- throw new APISecurityException (APISecurityConstants .API_AUTH_INVALID_CREDENTIALS ,
222
- "Invalid JWT token" );
223
223
}
224
-
225
224
JWTValidationInfo jwtValidationInfo = getJwtValidationInfo (signedJWTInfo , jwtTokenIdentifier );
226
225
227
226
if (jwtValidationInfo != null ) {
0 commit comments