SignalR Core JS客户端未在“升级”请求上传递授权标头

时间:2019-03-07 19:28:44

标签: asp.net-core signalr

我必须使用ASP .Net Core实施推送通知服务。显而易见的选择是使用SignalR Core。

我们的平台设置使用的是Azure App网关,并且已配置为不允许未经身份验证的请求。

我们已经设置了与SignalR的WebSockets通信。

在后台,SignalR Core遵循以下步骤:

  1. POS ../negociate->可以使用hub_token和支持的传输
  2. GET(发送升级标头和WebSockets令牌)。./Hub?id = {hub_token}-?失败

当调查为什么第2步没有将连接升级到WebSocket连接时,我注意到GET请求缺少Authorization标头。显然,AG阻止了此请求,甚至没有进入API。

我手动尝试与邮递员进行“握手”。 以上步骤:

  1. 确定
  2. 包括了Authorization JWT标头->结果101,Fiddler确认打开了连接。

我研究了文档,发现不支持Authorization标头。

有人尝试过任何解决方法吗? hen是@ aspnet / signalr客户端的下一个版本吗?

2 个答案:

答案 0 :(得分:0)

所以最终的解决方案是: 在浏览器中是将JWT标头与HTTP 101 UPGRADE一起发送的限制

答案 1 :(得分:-1)

您指定了accessTokenFactory吗?

let connection = new signalR.HubConnectionBuilder()
.withUrl("/myhub", {
    accessTokenFactory: () => {
        // Get and return the access token.
        // This function can return a JavaScript Promise if asynchronous
        // logic is required to retrieve the access token.
    }
})
.build();

更多信息here