c# - 如何在 SignalR 中为某些但不是所有集线器设置集成 Windows 身份验证
问题描述
我需要对集线器使用 Windows 身份验证,但由于我在更大的系统中工作,我只能通过 GlobalHost 访问 SignalR 管道。
我试过使用AuthorizedAttribute
,但没有设置身份,因为没有注册自动化模块。
我试过设置GlobalHost.HubPipeline.RequireAuthentication();
这设置了身份,但由于它设置了全局授权,其他集线器无法连接。
最后,我尝试添加一个自定义授权模块,它应该只适用于我想要的一个集线器。但是,一旦我为一个 Hub 设置了例外,身份就不会再次设置,并且我会从 Authorized Hub 收到 UnAuthrorized 响应。
解决方案
我通常将身份验证属性放在我的集线器类之上。
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class myChat : Hub
{
}
这是基于令牌的身份验证,您需要配置从客户端发送身份验证令牌。 https://docs.microsoft.com/en-us/aspnet/core/signalr/authn-and-authz?view=aspnetcore-3.1
推荐阅读
- apache-zookeeper - 为什么 Zookeeper 不重新选举 Apache Nifi 集群的新领导者?
- python - 这个主题的名称是什么?
- lumen - 流明:RoutesRequests.php 第 229 行中的 NotFoundHttpException,调度程序 NOT_FOUND
- docker - Logstash 和 Kibana 在 Docker 中看不到 Elasticsearch 容器
- java - 从java中的未来列表中获得第一个完成未来的方法是什么?
- python - 优化读取和镜像半 numpy 矩阵的函数
- python - 根据行将值从一个列表附加到另一个列表?
- python - 如何将变量从 EMR 集群传递到 Jupyter Notebook %%local 实例?
- vhdl - 如何在 vhdl 中增加 5 位数字
- sql-server - 查询符合 where 条件的所有客户的最大日期