gpt4 book ai didi

azure - 切换到 Azure SignalR 服务后 Context.UserIdentifier 为 null

转载 作者:行者123 更新时间:2023-12-02 07:08:09 25 4
gpt4 key购买 nike

我的 SignalR Hub 要求用户进行身份验证,以下行为我提供了用户的 ID:

var userId = Context.UserIdentifier;

同样,我可以通过以下方式获取整套声明:

var user = Context.User.Claims;

如果我在本地使用 SignalR,效果很好,但如果我切换到 Azure SignalR 服务,我会在 Context.UserIdentifier 中得到一个 null 值。我也没有收到任何 claim 。

以下是我在 Startup.cs 中更改的内容:

ConfigureServices() 方法中,我使用

services.AddSignalR().AddAzureSignalR(Configuration["AzureSignalR:ConnectionString"]);

而不是

services.AddSignalR();

Configure() 方法中,我使用:

app.UseAzureSignalR(routes =>
{
routes.MapHub<Hubs.MyHub>("/chat");
});

而不是:

app.UseSignalR(routes =>
{
routes.MapHub<Hubs.MyHub>("/chat");
});

我在 Azure SignalR 配置中是否还需要其他任何内容来确保获得用户的声明?知道为什么这一更改会阻止 claim 通过吗?

附注我正在使用 Azure AD B2C 进行用户身份验证,正如我所说,如果我在本地使用 SignalR,则一切正常,这意味着处理从 QueryString 获取 JWT token 的代码正在运行很好。

最佳答案

SignalR 服务将自动继承经过身份验证的用户的声明,无需特殊配置。我刚刚使用 SignalR 服务尝试了 Azure AD B2C 示例,并且可以从 HubCallerContext 获取声明。

您能否检查协商返回的 SignalR 访问 token ,看看声明是否首先从服务器返回? (从base64解码它然后你会看到声明)

关于azure - 切换到 Azure SignalR 服务后 Context.UserIdentifier 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51458726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com