Розширюючи відповіді на cookie-файли та відповіді dpix , коли ви читаєте маркер jwt (наприклад, маркер доступу, отриманий від AD FS), ви можете об'єднати твердження в маркері jwt із твердженнями з "context.AuthenticationTicket.Identity", які можуть не мають той самий набір вимог, що і маркер jwt.
Для ілюстрації, в потоці коду автентифікації за допомогою OpenID Connect після аутентифікації користувача ви можете обробити подію SecurityTokenValidated, яка надає вам контекст автентифікації, тоді ви можете використовувати його для читання access_token як маркера jwt, тоді ви можете " об'єднати "маркери, які знаходяться в access_token зі стандартним списком претензій, отриманих як частина ідентифікації користувача:
private Task OnSecurityTokenValidated(SecurityTokenValidatedNotification<OpenIdConnectMessage,OpenIdConnectAuthenticationOptions> context)
{
//get the current user identity
ClaimsIdentity claimsIdentity = (ClaimsIdentity)context.AuthenticationTicket.Identity;
/*read access token from the current context*/
string access_token = context.ProtocolMessage.AccessToken;
JwtSecurityTokenHandler hand = new JwtSecurityTokenHandler();
//read the token as recommended by Coxkie and dpix
var tokenS = hand.ReadJwtToken(access_token);
//here, you read the claims from the access token which might have
//additional claims needed by your application
foreach (var claim in tokenS.Claims)
{
if (!claimsIdentity.HasClaim(claim.Type, claim.Value))
claimsIdentity.AddClaim(claim);
}
return Task.FromResult(0);
}