首页 > 解决方案 > 如何在 C# 中检索 JWT 令牌?

问题描述

id_token从 AzureAD 中检索了一个可以在检查元素中看到的。

我只是想在 C# 中检索令牌,以便可以解密它,但我无法这样做。

我努力了:

var authHeader = Request.Headers["id_token"];
var authHeader = Request.Form["id_token"];

JwtSecurityToken token = new JwtSecurityToken(authHeader);

两者都返回 null。

标签: c#jwtazure-active-directory

解决方案


OnSecurityTokenReceived您可以通过 override方法获取 id 令牌。

将自定义添加OnSecurityTokenReceivedNotifications.

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);
        }

推荐阅读