我想知道,如果JWT应该附加到我的请求的标题手动,我如何使用JWT来验证我的ASP.Net Core网站的用户?
换句话说,在将请求发送到服务器时,如何告诉我的浏览器在标头中附加令牌?让我们说我的网站用户从我的网站的API获得此令牌。
或者JWT是否仅可用于WebAPI(我可以手动构建请求)?
答案 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。
总结当前状态: