解析 JWT 以获取 C# 中的声明
Parsing JWT to get claims in C#
我们的高级开发人员编写了以下代码,作为示例:
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" class 只是有一个名称 属性 作为字符串。)
我们的 decoded JWT 负载如下所示:
{
"iss": "https://someissuer.com/",
"sub": "I want this string, atm I get it manually",
"aud": "11543fdsasf23432",
"exp": 33244323433,
"iat": 23443223434
}
我 运行 遇到的问题是,当我尝试通过类型 "sub" 获得声明时,什么也没有出现(而且它不在列表中)。但是 "sub" 似乎是 extremely common claim.
我在这里做错了什么?去吧我得到主题("sub")声明?
编辑:对于那些推荐 system.IdentityModel - 我在尝试使用它时遇到此错误:
如果您有 JWT 格式的令牌,您可以使用 System.IdentityModel.Tokens.Jwt.dll、v2.0.0.0 并获取如下所示的主题
var jwtToken = new JwtSecurityToken(token);
jwtToken.Subject
我们的高级开发人员编写了以下代码,作为示例:
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" class 只是有一个名称 属性 作为字符串。)
我们的 decoded JWT 负载如下所示:
{
"iss": "https://someissuer.com/",
"sub": "I want this string, atm I get it manually",
"aud": "11543fdsasf23432",
"exp": 33244323433,
"iat": 23443223434
}
我 运行 遇到的问题是,当我尝试通过类型 "sub" 获得声明时,什么也没有出现(而且它不在列表中)。但是 "sub" 似乎是 extremely common claim.
我在这里做错了什么?去吧我得到主题("sub")声明?
编辑:对于那些推荐 system.IdentityModel - 我在尝试使用它时遇到此错误:
如果您有 JWT 格式的令牌,您可以使用 System.IdentityModel.Tokens.Jwt.dll、v2.0.0.0 并获取如下所示的主题
var jwtToken = new JwtSecurityToken(token);
jwtToken.Subject