首页 > 解决方案 > 身份服务器授权代码流示例 - 读取声明

问题描述

我已经使用代码流实现了一个身份提供者和一个客户端应用程序。在验证他的令牌并查看索赔时,我找不到与我正在起诉的用户相关的索赔。代码与Identity Server 4 Authorization Code Flow 示例非常相似

private IEnumerable<Claim> ValidateToken(string token)
{
    var certPath = Path.Combine(Server.MapPath("~/bin"), "SscSign.pfx");
    var cert = new X509Certificate2(certPath);
    var x509SecurityKey = new X509SecurityKey(cert);

    var parameters = new TokenValidationParameters
                         {
                             RequireSignedTokens = true,
                             ValidAudience = audience,
                             ValidIssuer = validIssuer,
                             IssuerSigningKey = new X509SecurityKey(cert),
                             RequireExpirationTime = true,
                             ClockSkew = TimeSpan.FromMinutes(5)
                         };

    var handler = new JwtSecurityTokenHandler();
    SecurityToken jwt;
    var id = handler.ValidateToken(token, parameters, out jwt);

    foreach (Claim claim in id.Claims)
    {
        **I can't see any claim for key email**
    }

    this.Request.GetOwinContext().Authentication.SignOut("TempCookie");

    return id.Claims;
}

如果有人可以帮助我阅读电子邮件声明,我将不胜感激。@bayardw

标签: c#identityserver4identityserver3

解决方案


I'm sure you don't have a claim with email. You can check it here jwt.io

You have to define it in settings for Resources docs.identityserver.io


推荐阅读