我读这篇文章 http://www.asp.net/signalr/overview/security/introduction-to-security#connectiontoken
JS客户端
$.connection.hub.qs = { "token" : tokenValue };
$.connection.hub.start().done(function() { /* ... */ });
.NET 客户端
var connection = new HubConnection("http://foo/",
new Dictionary<string, string>
{
{ "token", tokenValue }
});
在 Hub 内,您可以通过上下文访问社区名称:
Context.QueryString["token"]
在 .NET 客户端上设置标头
var connection = new HubConnection("http://foo/");
connection.Headers.Add("token", tokenValue);
我注意到我们可以将一些令牌值从客户端传递到集线器函数作为查询字符串.....如果我将任何东西作为查询字符串传递是不安全的。因此,告诉我以安全的方式将令牌值从客户端传递到集线器功能的最佳方法,因此没有人可以破解/更改或重用该令牌值。
一个人SignalR uses encryption and a digital signature to protect the connection token.
说。所以请告诉我,Signalr 首先加密令牌值,然后从客户端传递到集线器是真的吗?
建议我如何以安全的方式将令牌值传递给集线器。 谢谢
您可以在 javascript 客户端中使用标头,例如:
$.signalR.ajaxDefaults.headers = { Authorization: "Bearer " + yourToken };
现在不是黑客,是一个全局设置,您可以在启动或成功的身份验证响应时执行一次!享受!
现在,只有当我能找到一种在每个请求的基础上覆盖它的方法时,我才能让用户仿真沙箱为我的管理角色中的用户工作......
当客户端启动连接时,服务器会创建并加密连接令牌并将其发送到客户端。从这一点开始,客户端每次向服务器发送请求时都必须发送连接令牌。服务器在收到请求时验证连接令牌。如果您询问如何防止多个客户端使用相同的令牌,那么我认为您需要查看身份验证。