asp.net-mvc-4 - 如何在SignalR(.NET客户端)中使用自定义基本身份验证?

标签 asp.net-mvc-4 authentication iis signalr signalr.client

有关如何使用SignalR进行Forms身份验证或Windows身份验证的信息很多。我对使用自己的身份验证数据库感兴趣。我使用.NET客户端,因为连接代理是一项服务,而不是背后带有人员的Web浏览器。理想情况下,我希望客户代码使用:

hubConnection.Credentials = new NetworkCredential(userName, password);

我的服务器代码可以在中心上使用[Authorize],并可以使用Context.User。所有通讯都通过https进行,所以我不在乎纯文本。

我已经阅读了asp.net basic authentication指南,该指南显示了如何使用IHttpModule覆盖身份验证机制。但是,当我在HttpModule中断点代码时,似乎从未在来自.NET SignalR客户端的请求中设置“授权” header 。

我要做的只是简单地从客户端传递用户名和密码,并编写如何在服务器上进行身份验证的代码。这样难吗?没魔术没有事件目录。只是由我认证。

我目前可行的方法是设置自定义 header ,这些 header 在SignalR级别上解释(使用自定义AuthorizeAttribute),但是显然,“正确的方法”不是在授权级别上进行身份验证,而是由网络服务器执行在SignalR发生任何事情之前。

任何人都可以描述一个完整但简单的自定义身份验证的好的过程吗?

最佳答案

客户
var connection = new Connection(url + "/echo"); connection.Credentials = new NetworkCredential("user", "password"); await connection.Start();
服务器
app.Map("/basicauth", map => { map.UseBasicAuthentication(new BasicAuthenticationProvider()); map.MapSignalR<AuthenticatedEchoConnection>("/echo"); map.MapSignalR(); });
NuGet所需的软件包:Microsoft.Owin.Security.Basic

您可以看到完整的here示例

关于asp.net-mvc-4 - 如何在SignalR(.NET客户端)中使用自定义基本身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18660075/

相关文章:

c# - 如何在 C# AspNetCore 网站中使用 JWT JSON Web Tokens?

asp.net - IIS 应用程序池、工作进程、应用程序域

ASP.Net session 在回发后偶尔会丢失

.net - JSON.NET 返回未格式化的字符串

jquery - 如何在 MVC 4 中使用 jQuery 更新 List<Model>

asp.net-mvc-4 - 如何在登录时保存密码

asp.net - ExtensionlessUrlHandler 和带点的路径

asp.net - MVC 自定义角色提供程序重定向到登录页面

javascript - ASP.NET MVC 和 Javascript/jQuery 的设置?

android - 如果我安装了 Facebook 应用程序,我的 Facebook 登录 Android 应用程序将不会打开 session