来自 Angular 的 SignalR Core 中的 JWT 身份验证
Posted
技术标签:
【中文标题】来自 Angular 的 SignalR Core 中的 JWT 身份验证【英文标题】:JWT authentication in SignalR Core from Angular 【发布时间】:2018-03-25 10:30:01 【问题描述】:帖子几乎与this 问题相同,但我使用的是新的 SignalRCore (1.0.0 alpha2)。<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.0.0-alpha2-final" />
在我的 .NET Core 2.0 中,我使用 OpenIddict 对服务器上的用户进行身份验证。在客户端我使用angular2-jwt。
现在我需要知道如何使用Authorization header access_token
连接服务器?我假设在尝试连接服务器时应该使用自定义请求标头。
这可以用新的 SignalR Core 完成吗?我发现 this 线程提到 websockets 不支持自定义标头,但我想知道 SignalR Core 团队是否做了一些魔术来支持这种情况。
【问题讨论】:
【参考方案1】:当您使用 javascript 客户端时这是不可能的,因为一些底层 API(如 webSocket)不允许设置标头。这就是您需要使用 queryString 的原因。另外,这个thread on github 可能有用。
如果您正在使用 C# 客户端设置标头目前是不可能的,但这只是 API 的限制,应该在将来修复。
编辑
SignalR 现在拥有允许将 JWT 令牌传递给 C# 和 JavaScript 客户端的 API。现在也可以在使用 C# 客户端时设置标头。
【讨论】:
以上是关于来自 Angular 的 SignalR Core 中的 JWT 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core Angular - 根据登录用户发送不同的 SignalR 消息
使用 SIGNAL R 的 Angular 7 和 ASP.NET Core 2.2 的 CORS 策略问题
SignalR 授权无法在带有 Identity Server 的 asp.net core angular SPA 中开箱即用