gpt4 book ai didi

azure-active-directory - 带有 AzureAD Auth 的 Blazor,Context.Identity.User.Name 为空

转载 作者:行者123 更新时间:2023-12-04 15:41:35 31 4
gpt4 key购买 nike

只有经过身份验证的用户才能按预期访问该应用程序。我需要能够通过信号器跟踪用户。例如,如果我运行 ChatHub 类型的服务,我希望人们能够使用他们应该自动设置的 AzureAD 用户名聊天,而不是让人们设置自己的用户名。

中心始终显示 Context.Identity.User.Name 为空。

    services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));

services.AddTransient<HubConnectionBuilder>();


app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub<App>(selector: "app");
endpoints.MapFallbackToPage("/_Host");
endpoints.MapHub<SomeHub>("/SomeHub");
});

知道这里是否有保存身份信息并传递给 SignalR 的方法吗?

最佳答案

检查您的 JWT token 并检查其声明。你可以在http://jwt.ms/上粘贴它解码它。然后,查找返回的引用用户名的声明(在我的例子中是 preferred_username)。

然后您可以使用以下代码更改 Identity.Name 的默认映射:

services.Configure<OpenIdConnectOptions>(AzureADDefaults.AuthenticationScheme, options =>
{
options.TokenValidationParameters.NameClaimType = "<claim_name_that_returns_username>";
});

关于azure-active-directory - 带有 AzureAD Auth 的 Blazor,Context.Identity.User.Name 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57715882/

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