gpt4 book ai didi

c# - Azure Active Directory 获取用户组

转载 作者:行者123 更新时间:2023-11-30 23:06:19 25 4
gpt4 key购买 nike

我正在尝试(像许多其他人一样)为我的应用程序的用户获取组成员资格。我不断遇到以下代码行的阻塞点:

IPagedCollection<IGroup> pagedCollection = await client.Groups.ExecuteAsync();

.. 抛出异常(“未授权”)。虽然我明白错误的意思,但我不确定为什么会这样说。我已授予我的应用程序 Graph API 下的每一项权限(39 个应用程序权限和 88 个委托(delegate)权限 - 目前我只是进行原型(prototype)设计)。

我还“管理员同意”,因为我已经完成了登录过程,并“接受”了它告诉我它将使用的很长的权限列表,然后继续带我回到我的应用程序,然后上面的代码行失败。

作为引用,我一直在关注 Azure 文档站点上的“TodoListWebApp”演示代码,虽然我可以使用 AD 身份验证成功登录到应用程序,但我对 HomeController Index 操作进行了修改以获取列表(作为测试)似乎是我的失败。

这是我到目前为止所使用的;

ActiveDirectoryClient client = AuthenticationHelper.GetActiveDirectoryClient();
IPagedCollection<IGroup> pagedCollection = await client.Groups.ExecuteAsync();

do
{
List<IGroup> directoryGroups = pagedCollection.CurrentPage.ToList();
foreach (IGroup directoryGroup in directoryGroups)
{
roleList.Add((Group)directoryGroup);
}
pagedCollection = await pagedCollection.GetNextPageAsync();
}
while (pagedCollection != null);

我也尝试过遵循这个预先存在的问题; Get a list of groups that Azure AD user belongs to in claims

我已如上所述修改了应用程序 list ,并尝试使用 Jonas 发布的 GetGroupMembershipsByObjectId 方法。

这只会导致异常消息“发生一个或多个错误”。所以我真的陷入了困境。

任何帮助都会很棒

编辑:

进行了一些编辑 - 我意识到发布的代码不准确,因为它引用的是角色而不是组,因此我进行了更新。

第二次编辑是我已经确定了这个助手的异常来源;

https://github.com/Azure-Samples/active-directory-dotnet-graphapi-web/blob/master/WebAppGraphAPI/Utils/AuthenticationHelper.cs

token 从未设置,因此会出现错误,但我在源代码中看不到要设置它的位置?如果有人能指出我那个方向。

最佳答案

根据您的描述,您正在 MVC 应用程序中使用 AD Graph。 AFAIK,您只需在 Azure 门户上注册您的 Web 应用程序/API 应用程序,然后设置 Windows Azure Active Directory API 所需的权限,然后选择委派权限访问签名的目录-in user登录并读取用户个人资料,如下所示:

enter image description here

此外,您可以按照有关 Calling the Azure AD Graph API in a web application 的 github 示例进行操作。 .

此外,您可以使用 jwt.io解码您的访问 token 并确保 scp 属性包含 Directory.AccessAsUser.AllUser.Read委派权限。

关于c# - Azure Active Directory 获取用户组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48298301/

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