我可以在代码内的标头上使用发送的JWT令牌吗?

时间:2018-12-20 21:45:59

标签: c# jwt

所以我一直在四处张望,我想知道我是否可以以某种方式使用在我的代码内以我的授权请求标头发送的jwt令牌,或者一旦请求到达Web api端点,它就会丢失?

我想使用令牌提取某些信息,而不将令牌作为我的身体的一部分发送。

我尝试在Web api项目中使用jwt库,但没有用

我想使用令牌提取某些信息,而不将令牌作为身体的一部分发送。例如我的电子邮件。

1 个答案:

答案 0 :(得分:2)

您应该能够从HttpContext附带的原则中读取声明

var identity = HttpContext.User.Identity as ClaimsIdentity;
if (identity != null)
{
    return identity.FindFirst("email").Value;   
}

否则,您可以使用JwtSecurityTokenHandler来验证令牌,获取原则,然后改为从该原则中读取声明:

JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
var principle = tokenHandler.ValidateToken(token, .... );
return principal.Claims.SingleOrDefault(c => c.Type == "email").Value;

您可以从HttpRequestMessage(请求)的标头中获取承载令牌。

IEnumerable<string> headers;
request.Headers.TryGetValues("Authorization", out headers);
return headers.ElementAt(0); // Bearer Token