【发布时间】:2015-02-26 01:08:39
【问题描述】:
我在 Asp.net Web Api 项目中使用 SignalR。
我正在从不同的 Asp.net MVC 项目连接到集线器。
到目前为止一切正常。
但是,我需要在 SignalR Hubs 上实现身份验证,为此,我只需要将 token 作为 QueryString 参数发送:
// Hub implementation on Asp.Net Web Api project
public class AppHub : Hub
{
public override async Task OnConnected()
{
string token = Context.QueryString["token"];
var validateResult = ValidateRequestService.ValidateToken(token);
Groups.Add(Context.ConnectionId, validateResult.UserName);
base.OnConnected();
}
}
// Javascript implementation on Asp.net MVC project
$.connection.hub.url = 'http://webApiProject.com/signalr';
$.connection.hub.qs = { 'token': '@(ViewBag.SessionToken)' };
这行得通。
问题是我在客户端(浏览器)上存储敏感信息(token)。如果黑客检查页面的源代码,很容易看到token键。
有没有办法加密/解密查询字符串参数,以便在客户端加密?
我可以在客户端轻松加密它,但问题是它也会被加密发送到Web Api 服务器。
HttpModule 在这种情况下会起作用吗?
【问题讨论】:
-
SignalR 支持在 ASP.NET 中使用的内置模型
-
@Anders 我没有使用
FormsAuthentication。token使用外部服务进行验证 -
使用自定义成员资格提供程序并让 ASP.NET 为您编组身份验证:顺便说一句,您不仅限于 Forms,您也可以使用 Windows
-
带有 SignalR 的 Web Api 服务器根本不知道成员资格。它只能使用第三方服务(通过 Http 请求)验证请求 - 我不能使用会员资格
-
您可以使用 CUSTOM 会员提供商,这样您就可以将客户端/服务器安全部分外包给 ASP.NET,而无需担心您的解决方案是否安全。
标签: asp.net asp.net-mvc encryption signalr signalr-hub