azure - 切换到 Azure SignalR 服务后,Context.UserIdentifier 为 null
问题描述
我的 SignalRHub
要求对用户进行身份验证,以下行给了我用户的 ID:
var userId = Context.UserIdentifier;
同样,我可以通过以下方式获得整套声明:
var user = Context.User.Claims;
如果我在本地使用,这很好SignalR
,但如果我切换到 Azure SignalR 服务,我会null
在Context.UserIdentifier
. 我也没有得到任何索赔。
这是我正在更改的内容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 配置中的其他任何内容来确保我获得用户的声明?知道为什么这一变化会阻止索赔通过吗?
PS 我正在使用 Azure AD B2C 进行用户身份验证,正如我所说,如果我在本地使用 SignalR,一切正常,这意味着处理从中获取JWT
令牌的代码QueryString
工作正常。
解决方案
SignalR 服务将自动从您经过身份验证的用户那里继承声明,无需特殊配置。我刚刚尝试了带有 SignalR 服务的 Azure AD B2C 示例,声明可以从HubCallerContext
.
您能否检查从协商返回的 SignalR 访问令牌,以查看声明是否首先从服务器返回?(从base64解码然后你会看到声明)
推荐阅读
- amazon-web-services - Terraform 多个 s3 存储桶创建
- linux - 如何注册用户应用程序以在 Yocto 中获得电池事件(低、严重等)的通知?
- html - 如何通过子 div 的更改来调整容器 div 的大小?
- c# - 进程内存增加 WPF 应用程序
- mongodb - MongoDB Atlas中的多个集群与一个集群
- django - Django Webhook 接收 Mailgun 的 post 请求
- python - /flightdetails/airlines/1 'Airlines' 对象的 TypeError 不可迭代
- graphicsmagick - 如何让 graphicsmagick 在 BMP 文件中画一条线?
- r - 如何在使用 tidytext 中的 reorder_within 对每个方面内的箱线图进行排序时从 y 轴值中删除方面值?
- python - 如何在 Sagemaker 中获取特定模型映像的 Amazon ECR 容器 URI?