[ 
https://issues.apache.org/jira/browse/CAMEL-26404?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrea Cosentino resolved CAMEL-26404.
--------------------------------------
    Resolution: Fixed

Fixed in main via https://github.com/apache/camel/pull/28689

> camel-oauth: validate audience and authorized party claims for access tokens 
> in UserProfile
> -------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26404
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26404
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-oauth
>            Reporter: Andrea Cosentino
>            Assignee: Andrea Cosentino
>            Priority: Major
>             Fix For: 4.18.6, 4.22.3, 4.24.0
>
>
> h3. Current behaviour
> In {{org.apache.camel.oauth.UserProfile.verifyToken}} (camel-oauth), the 
> validation checks for {{aud}} (audience) and {{azp}} (authorized party) 
> claims are guarded by the {{idToken}} flag:
> {code:java}
> String clientId = config.getClientId();
> if (idToken && !targetAudience.contains(clientId)) {
>     throw new OAuthException("Invalid JWT audience. Expected to contain: " + 
> clientId);
> }
> if (idToken && tokenJwt.has("azp")) {
>     String authorizedParty = tokenJwt.get("azp").getAsString();
>     if (!authorizedParty.equals(clientId)) {
>         throw new OAuthException("Invalid authorized party != 
> config.clientID");
>     }
>     if (!targetAudience.contains(authorizedParty)) {
>         throw new OAuthException("ID Token audience, doesn't contain 
> authorized party");
>     }
> }
> {code}
> When verifying access tokens (such as incoming bearer tokens evaluated by 
> {{OAuthBearerTokenProcessor}} via {{ServletOAuth}}), {{idToken}} is false. 
> Consequently, {{targetAudience}} is parsed from the token, but is not 
> evaluated against the configured client ID or {{JWTOptions.getAudience()}}. 
> In addition, the {{azp}} claim is not evaluated for access tokens.
> h3. Expected behaviour
> * {{UserProfile.verifyToken}} should validate the {{aud}} claim for access 
> tokens as well as ID tokens against expected audiences (such as 
> {{JWTOptions.getAudience()}} or {{config.getClientId()}}).
> * When {{azp}} is present on an access token, it should be validated against 
> the authorized client.
> * Access tokens with mismatched audience should be rejected.
> h3. Change
> * Update {{UserProfile.verifyToken}} to validate {{targetAudience}} and 
> {{azp}} on access tokens.
> * Support checking against configured expected audiences from 
> {{JWTOptions.getAudience()}} or {{config.getClientId()}}.
> * Add unit test coverage in {{UserProfileTest}} and 
> {{ServletOAuthTokenCredentialsTest}} verifying audience and authorized party 
> validation on access tokens.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to