【发布时间】:2016-08-12 01:50:10
【问题描述】:
我有一个多用户 Office365 Web 应用程序,它使用授权代码流(我的服务器执行对 API 的请求)对用户进行身份验证,该授权代码流由 OAUTH/OpenIdConnect 上的 Azure AD 保护。
我们使用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 应用程序清单中,我未经管理员同意仅使用范围。
但是,我想知道当前连接的用户是否是租户的 Office 365 全局管理员。
我检查了接受的answer here。这基本上读取了<graphurl>/me/memberOf的响应
但是,在我的情况下这是不可接受的。在this reference 之后,所有必需的范围都是“管理员同意”范围。
我尝试了不同的方法:使用System.Web.Security.Roles.GetRolesForUser(),查看ClaimsPrincipal.Current,最后仔细检查已解析的 JWT,看看是否有关于已连接用户的 Office365 角色的信息。都没有成功。
您能否提供一种方法来了解 Office 365 租户中的当前用户管理角色,并使用声明为没有管理员同意范围的应用程序?
备注: 这个问题或多或少与this one有关,但要求不那么强烈:我们只想看看当前用户是否是全局管理员。
【问题讨论】:
标签: azure azure-active-directory openid-connect adal office365api