首页 > 解决方案 > 如何在 SignalR 中为某些但不是所有集线器设置集成 Windows 身份验证

问题描述

我需要对集​​线器使用 Windows 身份验证,但由于我在更大的系统中工作,我只能通过 GlobalHost 访问 SignalR 管道。

我试过使用AuthorizedAttribute,但没有设置身份,因为没有注册自动化模块。

我试过设置GlobalHost.HubPipeline.RequireAuthentication();

这设置了身份,但由于它设置了全局授权,其他集线器无法连接。

最后,我尝试添加一个自定义授权模块,它应该只适用于我想要的一个集线器。但是,一旦我为一个 Hub 设置了例外,身份就不会再次设置,并且我会从 Authorized Hub 收到 UnAuthrorized 响应。

标签: c#signalrwindows-authentication

解决方案


我通常将身份验证属性放在我的集线器类之上。

 [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
 public class myChat : Hub 
 {
 }

这是基于令牌的身份验证,您需要配置从客户端发送身份验证令牌。 https://docs.microsoft.com/en-us/aspnet/core/signalr/authn-and-authz?view=aspnetcore-3.1


推荐阅读