gpt4 book ai didi

asp.net-mvc - 无法让 Azure AD 组出现在用户声明中

转载 作者:行者123 更新时间:2023-12-02 06:23:35 24 4
gpt4 key购买 nike

我已经阅读了有关此主题的所有文章和帖子,但无济于事。

我有一个 Azure 中的 MVC 应用程序。我想连接到 Azure AD,并获取用户的组。

为此,我首先更改了 Program.cs

// Azure AD
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"));

还有这个:

builder.Services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();

options.Filters.Add(new AuthorizeFilter(policy));
});

一旦我这样做了,它就会要求我在运行时进行身份验证。我登录了,并且成功了。在我的 MVC 页面上,我添加了 @User.Claims.SingleOrDefault(_ => _.Type == "name")?.Value; 并且效果很好。

接下来,我想查看用户属于哪些组。

我遵循了我能找到的所有指南,但似乎没有任何效果。在用户的声明中,没有“组”条目或任何表明超额的内容(我认为它会出现在声明中?)。

现在我不知道我的 appsettings 文件中是否缺少某些配置?我这么说是因为我的应用程序设置只有这个:

 "Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"ClientId": "a guid",
"TenantId": "another guid"
},

目前还不清楚。添加上述内容后,我进入 Azure 并执行了各种任务:

我的网络应用程序: token 配置 > 添加组声明
我的网络应用程序:API权限> GroupMember.Read.All(已授予)
我的网络应用程序:Manifest > 更改为 "groupMembershipClaims": "All"

我也在企业应用程序> MyApp | 中做了同样的事情单点登录,我不知道那是什么,但它在我读过的众多帖子之一中。

我可能错过了什么,导致这些组无法出现?

最佳答案

这就是答案,我希望这可以为 future 的人们减轻一些疯狂的痛苦。

无论出于何种原因,您的声明都会被缓存。我已经花了两天时间尝试解决这个问题。所以它会缓存很长时间。

由于应用程序是单点登录,并且会抵制大多数强制其注销的尝试,因此这就是问题所在。当我退出后,它更新了我的声明。

因此,如果您遇到问题,请记住退出并重新登录!

方法如下:

Azure > 转到 Azure Active Directory > 应用程序注册

单击您的应用程序,单击“身份验证”

在前端 channel 注销 URL 中,输入值:https://localhost:[YOURPORTHERE]/signout-oidc 假设它是 dev 并且您正在使用端口号。

点击“保存”。

现在启动您的网站,然后浏览到该 URL。它会将您注销。下次您点击它时,它会提示您重新登录,然后您的所有信息都会更新。

关于asp.net-mvc - 无法让 Azure AD 组出现在用户声明中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73730123/

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