来自 Angular 的 SignalR Core 中的 JWT 身份验证
JWT authentication in SignalR Core from Angular
post 几乎与 问题重复,但我使用的是新的 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
连接服务器?我假设我应该在尝试连接服务器时使用自定义请求 header。
这可以用新的 SignalR Core 完成吗?我发现 this 线程提到 websockets 不支持自定义 headers 但我想知道 SignalR Core 团队是否做了一些魔法来支持这种情况。
当您使用 JavaScript 客户端时,这是不可能的,因为某些底层 APIs(如 webSocket)不允许设置 headers。这就是您需要使用 queryString 的原因。另外,这个 thread on github 可能会有用。
如果您使用的是 C# 客户端,目前无法设置 headers,但这只是 API 的一个限制,应该在将来修复。
编辑
SignalR 现在有 API 允许将 JWT 令牌传递给 C# 和 JavaScript 客户端。现在也可以在使用 C# 客户端时设置 headers。
post 几乎与
<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.0.0-alpha2-final" />
在我的 .NET Core 2.0 中,我使用 OpenIddict 在服务器上对用户进行身份验证。在客户端我使用 angular2-jwt.
现在我需要知道如何使用 Authorization header access_token
连接服务器?我假设我应该在尝试连接服务器时使用自定义请求 header。
这可以用新的 SignalR Core 完成吗?我发现 this 线程提到 websockets 不支持自定义 headers 但我想知道 SignalR Core 团队是否做了一些魔法来支持这种情况。
当您使用 JavaScript 客户端时,这是不可能的,因为某些底层 APIs(如 webSocket)不允许设置 headers。这就是您需要使用 queryString 的原因。另外,这个 thread on github 可能会有用。
如果您使用的是 C# 客户端,目前无法设置 headers,但这只是 API 的一个限制,应该在将来修复。
编辑
SignalR 现在有 API 允许将 JWT 令牌传递给 C# 和 JavaScript 客户端。现在也可以在使用 C# 客户端时设置 headers。