gpt4 book ai didi

Azure AD - Office365API。检查连接的用户是否是没有管理员同意范围的全局管理员

转载 作者:行者123 更新时间:2023-12-04 17:59:56 25 4
gpt4 key购买 nike

我有一个 Multi-Tenancy Office365 Web 应用程序,它使用 OAUTH/OpenIdConnect 上的 Azure AD 保护的授权代码流(我的服务器向 API 发出请求)对用户进行身份验证。

我们使用Microsoft.Owin.Security.OpenIdConnect, Version=3.0.0.0和 Azure Active Directory ADAL.NET 客户端 Microsoft.IdentityModel.Clients.ActiveDirectory, Version=2.19.0.0关注this sample .

在我的 Azure AD 应用程序 list 中,我仅使用范围未经管理员同意

但是,我想知道当前连接的用户是否是租户的 Office 365 全局管理员。

我检查了已接受的answer here 。这基本上读取了<graphurl>/me/memberOf处的响应。但是,在我的情况下这是 Not Acceptable 。正在关注this reference ,所有必需的范围都是“管理员同意”范围。

我尝试了不同的方法:使用 System.Web.Security.Roles.GetRolesForUser() ,查看ClaimsPrincipal.Current最后仔细检查解析后的 JWT,看看是否有有关连接用户的 Office365 角色的信息。一切都没有成功。

您能否提供一种方法来了解 Office 365 租户中当前的用户管理角色以及声明为无管理员同意范围的应用程序?

备注:这个问题或多或少与this one相关。但要求不太严格:我们只想查看当前用户是否是全局管理员。

最佳答案

Can you provide a way to know the current user administration roles within the Office 365 tenants with an application declared with no admin consent scopes?

对于 Multi-Tenancy 应用程序,访问目录数据需要管理员同意。

但是,一旦管理员同意该应用程序,组织内的所有用户都将被允许使用该应用程序(无需同意)。

添加同意 URL 参数“prompt=admin_consent”:

    public ActionResult AdminConsentApp()
{
string strResource = Request.QueryString["resource"];
string strRedirectController = Request.QueryString["redirect"];

string authorizationRequest = String.Format(
"https://login.windows.net/common/oauth2/authorize?response_type=code&client_id={0}&resource={1}&redirect_uri={2}&prompt={3}",
Uri.EscapeDataString(SettingsHelper.ClientId),
Uri.EscapeDataString(strResource),
Uri.EscapeDataString(String.Format("{0}/{1}", this.Request.Url.GetLeftPart(UriPartial.Authority).ToString(), strRedirectController)),
Uri.EscapeDataString("admin_consent")
);

return new RedirectResult(authorizationRequest);
}

更多详情可以引用示例项目 O365-WebApp-MultiTenant .

关于Azure AD - Office365API。检查连接的用户是否是没有管理员同意范围的全局管理员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36725922/

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