我在ASP .NET Core Web API应用程序中使用JWT身份验证令牌 . 令牌由API本身生成,而不是由第三方生成 . 我成功地将SignalR添加到堆栈中,但现在我需要对尝试执行服务器(Hub)方法的用户进行身份验证 . 有人建议在JavaScript中的"qs"属性中传递令牌 . 这将是 not work for me ,因为我们的代币非常大(它们包含大量索赔) . 我尝试编写一个自定义中间件,用于从有效负载中读取令牌并自动验证用户 . 问题是,使用WebSockets时,不会执行中间件 . 任何想法都会有所帮助
1 回答
看一下建议使用查询字符串Authenticate against a ASP.NET Core 1.0 (vNext) SignalR application using JWT的文章 . 我知道您的令牌太长,但作者解释了如何使用中间件来验证请求 .
以下是文章摘要:
我强调了在Jwt中间件之前应该注册自定义中间件的关键点 .
从这个answer您可以创建一个WebSocket连接并将您的令牌作为基本auth参数传递: