使用PHP获取Azure Web App中的分配角色

时间:2019-09-25 19:45:23

标签: php azure azure-active-directory azure-web-sites

我已经使用PHP创建了一个Azure Web App。我启用了AAD身份验证,并且所有这些都可以解决,您必须以公司用户身份登录才能访问该站点。

然后,我使用App Registration --> Manifest创建了新的应用程序角色。我已经为自己分配了该角色,然后注销并重新启动,并且在$_SERVER变量中找不到该角色的任何引用。我可以找到我的用户名,令牌,principal_id等,但是没有任何内容引用我刚刚创建的AppRole。

我的问题是,如何获得已分配登录用户的应用程序角色?我发现的唯一文档是.net或真正古老的Azure经典产品。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

基于official documentation,已定义的AppRole将在id_token中返回。

enter image description here

要获取用户的id_token,可以使用Azure AD OAuth 2.0 authorization code flow,并将openid添加到作用域。在这里,我使用邮递员来获取access_token和id_token:

enter image description here

然后我可以获取id_token

enter image description here

通过分析id令牌,您可以获得用户的角色:

enter image description here

答案 1 :(得分:0)

我想到将Microsoft Graph API用于此类操作的最简单方法。

以下是示例Github Repo供参考:

https://github.com/Azure-Samples/active-directory-php-graphapi-directoryextensions-web

要获得用户角色,您只需在图形api下方调用即可:

src="<?php echo get_stylesheet_directory_uri(); ?>/images/sample.jpg"

您可以查看下面的文档以获取更多参考:

https://docs.microsoft.com/en-us/graph/api/user-list-memberof?view=graph-rest-1.0&tabs=http

总体来说,流程是这样的:

  • 注册具有所需权限的应用程序
  • 使用上述创建应用程序从Azure AD获得授权
  • 使用步骤2的令牌并调用图形api以获取用户角色
  • 继续验证

示例响应如下:

GET /me/memberOf
or
GET /users/{id | userPrincipalName}/memberOf

希望有帮助。