我有一个ASP.NET Core Web API,其中我托管了一个SignalR集线器。
我已经创建了一个Azure SignalR服务,SignalR中心在启动时连接到该服务,使用创建Azure SignalR服务时提供的连接字符串。
我有一个winforms客户端应用程序,在启动时连接到SignalR集线器。Winforms应用程序的用户使用IWA进行身份验证。
我的Web API只用于托管SignalR Hub,所以我不会在我的Web API中添加/使用控制器。但是添加功能来支持Winforms客户端应用程序。
所以我的问题是,由于它托管在Azure中,我需要保护API免受未经授权的访问。如果我理解正确的话,这可以通过在项目模板附带的控制器上添加[Authorize]
来实现?
或者我可以简单地删除控制器,这样外部的任何人都无法访问API?
我是否也需要以某种方式保护我的SignalR集线器免受未经授权的访问?
2条答案
按热度按时间ttp71kqs1#
如果我理解正确的话,这可以通过在项目模板附带的控制器上添加
[Authorize]
来实现?是的,要保护和验证
Controller
/Web API
操作方法,必须添加[Authorize]
属性。当我们在创建WebApp时选择身份验证类型时,
默认情况下,Controller Action方法将使用
[Authorize]
属性进行装饰。我可以简单地删除控制器,这样外部的人就不能访问API了吗?
[Authorize]
属性,因此只有经过身份验证的用户才能访问该方法。Azure SignalR
服务。我是否需要以某种方式保护我的SignalR集线器免受未经授权的访问?
是的,我们也可以为SignalR服务添加
[Authorize]
属性。请参阅Various Ways to Authenticate and Authorize SignalR Hubs了解更多详细信息。
py49o6xq2#
我可以简单地删除控制器,这样外部的人就不能访问API了吗?回答:是
我是否需要以某种方式保护我的SignalR集线器免受未经授权的访问?答:您也可以在您的Web应用程序中添加IWA。
我创建了一个全新的asp.net核心mvc项目(我知道你正在使用webapi),这对我来说很容易在网页上测试。
感谢Harshitha的测试结果,我们可以删除所有的控制器,它也可以正常工作。
我已经在项目中启用了Windows身份验证。比如:
. add();
我们需要为hub类添加[Authorize]。
然后我创建一个winform应用程序,下面是我的代码:
Form1.Designer.cs
Form1.cs
以及测试结果。
最重要的事情
我们应该使用这个包
Microsoft.AspNetCore.SignalR.Client
并创建基于.net core的Winform应用程序,而不是.net framework。