You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需依赖.NET框架,如何用Entra ID处理自定义应用项级权限?

基于Azure Entra ID的项级权限控制实现方案

核心实现逻辑

你需要的项级权限校验,完全可以通过Azure Entra ID的自定义角色配置 + Microsoft Graph API查询完成,无需依赖.NET框架。

1. 定义项级自定义应用角色

在你的Azure Entra ID应用注册中,添加与项权限对应的自定义应用角色:

  • 比如针对「项1读取」,定义名为Item1.Read的角色;针对「项2读取」,定义Item2.Read角色。
  • 角色的权限范围设置为你的应用本身,确保这些角色仅作用于你的多用户应用场景。

2. 给用户分配角色

在Azure Entra ID中,将对应的角色分配给目标用户:

  • 用户1分配Item1.Read和Item2.Read角色;用户2仅分配Item1.Read角色。

3. 调用Microsoft Graph API校验权限

无需解析令牌,直接通过HTTP请求调用Graph API即可验证用户权限:

获取Graph API访问令牌

通过OAuth2.0客户端凭据流或授权码流获取访问令牌,示例curl命令:

curl -X POST "https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id={你的应用客户端ID}&scope=https://graph.microsoft.com/.default&client_secret={你的应用客户端密钥}&grant_type=client_credentials"

查询用户的角色分配

使用获取到的访问令牌,调用用户角色分配查询端点:

curl -X GET "https://graph.microsoft.com/v1.0/users/{目标用户ID}/appRoleAssignments" \
-H "Authorization: Bearer {获取到的access_token}"

返回结果中会包含用户被分配的所有应用角色,你只需检查结果里是否包含目标项对应的角色(如Item1.Read),即可判断用户是否拥有该项的读取权限。

直接验证角色归属(可选)

如果需要更高效的校验,可以调用checkMemberObjects端点,直接验证用户是否属于某个角色对应的对象:

curl -X POST "https://graph.microsoft.com/v1.0/users/{目标用户ID}/checkMemberObjects" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
  "ids": ["{目标角色的ID}"]
}'

返回的value数组会包含用户所属的角色ID,若包含目标角色ID则说明用户拥有对应权限。

注意事项

  • 角色定义要与你的项权限逻辑匹配,可根据业务需求选择按单权限定义角色,或按权限组定义角色。
  • 高频权限校验场景建议添加缓存层,减少Graph API调用次数,提升性能。

内容的提问来源于stack exchange,提问作者Tyler DeWitt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:18:21