Validated Audiences do not match Client Token

When I attempt to validate the token form Keycloak, I am receiving the following error:

Microsoft.IdentityModel.Tokens.SecurityTokenInvalidAudienceException: IDX10214: Audience validation failed. Audiences: 'master-realm, account'. Did not match: validationParameters.ValidAudience: 'null' or validationParameters.ValidAudiences: 'lamp-app'.

at Microsoft.IdentityModel.Tokens.Validators.ValidateAudience(IEnumerable1 audiences, SecurityToken securityToken, TokenValidationParameters validationParameters) at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateAudience(IEnumerable1 audiences, JwtSecurityToken jwtToken, TokenValidationParameters validationParameters)
at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateTokenPayload(JwtSecurityToken jwtToken, TokenValidationParameters validationParameters)
at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken)
at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()

My token request in Postman is as follows:

When I add the following, everything works…

            services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        }).AddJwtBearer(o =>
        {
            o.Authority = "http://localhost:8080/auth/realms/master";

            o.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
            {
                ValidAudiences = new string[] { "master-realm", "account", "lamp-app" }
            };

So why is Keycloak returning the Audiences “master-realm” and “account” and not “lamp-app”?

1 Like

The audience management for access tokens has changed.

You can check this other discussion:

I also made a bug report with some infos on that: Breaking change in 'aud' audience content for access tokens · Issue #12415 · keycloak/keycloak · GitHub