c# - 如何在 C# 中检索 JWT 令牌?
问题描述
我id_token
从 AzureAD 中检索了一个可以在检查元素中看到的。
我只是想在 C# 中检索令牌,以便可以解密它,但我无法这样做。
我努力了:
var authHeader = Request.Headers["id_token"];
var authHeader = Request.Form["id_token"];
JwtSecurityToken token = new JwtSecurityToken(authHeader);
两者都返回 null。
解决方案
OnSecurityTokenReceived
您可以通过 override方法获取 id 令牌。
将自定义添加OnSecurityTokenReceived
到Notifications
.
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = OnAuthenticationFailed,
SecurityTokenReceived= OnSecurityTokenReceived
}
然后你可以像这样得到id token
private Task OnSecurityTokenReceived(SecurityTokenReceivedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> context)
{
var idtoken = context.ProtocolMessage.IdToken;
return Task.FromResult(0);
}