能否将Azure Web App内置身份验证数据传递至应用,实现基于用户组的动态展示?
可以直接获取App Service内置认证的用户数据,无需停用该功能
完全不用放弃App Service内置的身份验证,它会自动将已认证用户的身份数据传递到你的应用里,具体获取方式分平台来看:
ASP.NET/ASP.NET Core:通过
HttpContext.User的Claims集合获取对象ID,代码示例:var objectId = HttpContext.User.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier")?.Value;其他用户相关的声明(比如用户名、租户ID)也能从
User.Claims里拿到。Node.js:从请求头中直接读取,比如对象ID在
x-ms-client-principal-id头里,用户名在x-ms-client-principal-name里,示例:const objectId = req.headers['x-ms-client-principal-id'];Python(Flask/Django):同样从请求头获取,比如Flask里:
object_id = request.headers.get('X-MS-CLIENT-PRINCIPAL-ID')
拿到对象ID后,你可以用App Service的托管身份来调用MS Graph查询用户组:
- 给你的Web App启用系统分配(或用户分配)托管身份;
- 在Azure AD里给这个身份授予
User.Read.All或Directory.Read.All的应用权限(选满足需求的最小权限); - 应用里通过托管身份获取Graph的访问令牌,再调用
GET /users/{objectId}/memberOf接口拿到用户所属的组。
这种方式既保留了App Service内置认证的便捷性(不用自己处理登录流程、令牌验证),又能实现你需要的组权限判断逻辑,完全不用切换到应用内认证的方案。
内容的提问来源于stack exchange,提问作者Gery
相关产品推荐
相关产品推荐

