SignalR(.NET Core)中的JWT身份验证,而不在查询字符串中传递令牌

前端之家收集整理的这篇文章主要介绍了SignalR(.NET Core)中的JWT身份验证,而不在查询字符串中传递令牌前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在ASP.NET Core Web API应用程序中使用JWT身份验证令牌.令牌由API本身生成,而不是由第三方生成.
我将SignalR成功添加到堆栈中,但现在我需要验证正在尝试执行服务器(Hub)方法用户.
有人建议在 JavaScript中的“qs”属性中传递令牌.这对我来说不行,因为我们的令牌真的很大(它们包含很多索赔).
我尝试编写一个自定义中间件,从有效载荷读取令牌并自动验证用户.问题在于,当使用WebSockets时,中间件不被执行.
任何想法都会有所帮助.

解决方法

看看建议使用查询字符串 Authenticate against a ASP.NET Core 1.0 (vNext) SignalR application using JWT文章.我知道你的令牌太长,但作者解释了如何使用中间件来验证请求.

以下是文章的总结:

  • SignalR does not have any special authentication mechanism built in,it is using the standard ASP.NET authentication.
  • JWT is typically sent in the Authorization header of a request
  • The SignalR JavaScript client library does not include the means to send headers in the requests,it does however allow you to pass a query string
  • If we pass the token in the query string we can write a middleware that adds a authorization header with the token as its value. This must be done before the Jwt middleware in the pipeline
  • Be aware of the “Bearer ” format

我已经突出了关键点,您的自定义中间件应该在Jwt中间件之前注册.

原文链接:https://www.f2er.com/netcore/249569.html

猜你在找的.NET Core相关文章