繁体   English   中英

在PHP中获取Azure AD用户角色

[英]Get Azure AD User Roles In PHP

我有一个用PHP编写的小应用程序,需要检查给定用户是否具有分配给他们的角色。 我正在使用启用了应用程序服务身份验证的Azure App Service,以针对蔚蓝活动目录对用户进行身份验证。 作为应用程序的一部分,我需要获取用户的用户名,显示名称,并且如果他们是三个安全组中一个或多个的成员,则可以将其定义为他们在应用程序中具有的访问级别。

我需要这样做,因为我无法在应用程序中管理角色,而是需要通过活动目录安全组进行管理。 我正在寻找azure应用程序服务固有的方法(如可能,最好不要进行单独的LDAP查找)。 我知道如何从发送到应用程序的头数据( HTTP_X_MS_CLIENT_PRINCIPAL_NAME )中提取经过身份验证的用户名,但是我不知道如何获取完整的显示名称以及如何检查用户是否具有分配给他们的特定角色。 我已经输出了整个php $_SERVER超级全局数组的副本,以查看我要查找的数据是否在其中,但我无法在其中找到它。

为了这个问题的目的,进行以下假设...

为user1@domain.com分配了角色role1,role2,role3
仅为user2@domain.com分配了角色role3

因此,如果任何一个用户登录,我都需要能够根据其AD条目显示其全名,并且需要能够检查它们是否属于安全组role1 role2和/或role3

我将发布一个代码示例,但是我不知道从哪里开始获取这些数据,因此到目前为止,我唯一的代码是一个测试块,用于将所有$_SERVER值打印到页面上以进行测试。

谢谢

一般来说,您可以利用Microsoft Graph REST API来满足您的要求。

首先,您可以按照https://graph.microsoft.io/en-us/docs/authorization/app_only实现仅以应用方式获取访问令牌的功能,然后可以发出List memberOf的HTTP请求以获取用户直接所属的组和目录角色。

HTTP GET URL应该类似于https://graph.microsoft.com/v1.0/users/{HTTP_X_MS_CLIENT_PRINCIPAL_NAME you get from header}/memberOf ,并在authorization标头中设置您获得的访问令牌。

此外,您可以参考https://github.com/Azure-Samples/active-directory-php-graphapi-directoryextensions-web/blob/master/AuthorizationHelperForGraph.php示例,了解如何仅在应用程序中获取访问令牌。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM