Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析JWT以获取C中的声明#_C#_Owin_Jwt - Fatal编程技术网

C# 解析JWT以获取C中的声明#

C# 解析JWT以获取C中的声明#,c#,owin,jwt,C#,Owin,Jwt,作为示例,我们的高级开发人员编写了以下代码: public class TokenParser { private Token token; public Token Parse(HttpRequestMessage r) { IOwinContext context = r.GetOwinContext(); token = new Token(); ParseData(context); return

作为示例,我们的高级开发人员编写了以下代码:

public class TokenParser 
{
    private Token token;

    public Token Parse(HttpRequestMessage r)
    {
        IOwinContext context = r.GetOwinContext();
        token = new Token();
        ParseData(context);
        return token;
    }

    private void ParseData(IOwinContext context)
    {
        token.Name= context.Authentication.User.Claims.Single(x => x.Type == ClaimTypes.Name).Value;
    }
}
(还有一个“Token.cs”类,它只有一个名称属性作为字符串。)

我们的JWT有效载荷如下所示:

{
  "iss": "https://someissuer.com/",
  "sub": "I want this string, atm I get it manually",
  "aud": "11543fdsasf23432",
  "exp": 33244323433,
  "iat": 23443223434
}
我遇到的问题是,当我尝试按类型“sub”获取索赔时,什么都没有出现(而且它不在列表中)。但“sub”似乎是一个词

我做错了什么?我如何获得主体(“sub”)索赔

编辑:对于那些推荐system.IdentityModel的人-我在尝试使用它时遇到以下错误:


如果您有JWT格式的令牌,您可以使用System.IdentityModel.Tokens.JWT.dll,v2.0.0获取主题,如下所示

var jwtToken = new JwtSecurityToken(token);
    jwtToken.Subject

谢谢,答案就在这里:但是我被告知不要使用它,也不能使用它,因为我将在原始问题中输入一个错误。这个错误确切地告诉您需要做什么来修复它,即添加对指定程序集的引用。这些程序集包含在.NET 4.5和4.6框架中,您应该能够以与添加对类似System.Collections.dll的程序集的引用相同的方式添加对它们的引用