如何使用JWT验证ASP.Net Core网站的用户?

时间:2017-12-10 01:05:01

标签: authentication asp.net-core .net-core jwt

我想知道,如果JWT应该附加到我的请求的标题手动,我如何使用JWT来验证我的ASP.Net Core网站的用户?

换句话说,在将请求发送到服务器时,如何告诉我的浏览器在标头中附加令牌?让我们说我的网站用户从我的网站的API获得此令牌。

或者JWT是否仅可用于WebAPI(我可以手动构建请求)?

1 个答案:

答案 0 :(得分:2)

使用JWT令牌的方法有很多种。由于JWT只是一种令牌格式,因此它确实意味着用于身份验证的方法。

但是,JWT主要用于承载认证方案,这需要为每个请求添加自定义标头。在客户端上用JavaScript创建请求以访问API端点的单页面应用程序(SPA)可以做到这一点,这就是为什么Bearer + JWT在SPA中被大量使用的原因。 SPA也可以从嵌入式JSON格式中受益,因为它们可以读取到期日期和其他信息(令牌中嵌入的声明,通过OpenID Connect获取的ID令牌内容等)。

"传统"使用JWT的服务器呈现的视图和链接很难,因为它们必须被设置为cookie或成为URL的一部分(由于URL长度限制,几乎不可能)。 ASP.NET Core 2.0不包含任何基于JWT的cookie逻辑,但可以使用JWT作为cookie创建自定义实现。有关示例实现,请参阅this GitHub project和相关blog post。请注意,在cookie身份验证中使用JWT的唯一好处是服务器不必保留cookie信息并在多个实例之间共享cookie。

总结当前状态:

  • 当您使用服务器端呈现和链接时,首选默认的Cookie身份验证,以避免创建自定义Cookie实现。
  • 如果您有单页应用程序(SPA)应用程序在客户端上使用javascript / typescript构建请求,则首选JWT承载身份验证。