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

如何配置Azure AD中SAML身份提供商以获取用户可访问应用列表

在Azure AD中配置SAML IDP企业应用以获取用户可访问应用列表

核心思路

要让SP门户获取用户可访问的应用列表,核心是通过Azure AD的SAML声明传递应用权限信息,或在用户认证后调用Graph API查询,以下是两种落地方案:


方案一:通过SAML令牌直接传递应用列表

1. 配置企业应用的自定义SAML声明

  • 登录Azure AD门户,找到你的SAML IDP企业应用
  • 进入「单一登录」>「用户属性与声明」
  • 点击「添加新声明」,配置如下:
    • 声明名称:AccessibleApps(可自定义)
    • 源类型:选择「表达式」
    • 表达式内容:使用Azure AD声明语法筛选用户关联的应用,例如GetFilteredMembershipGroups([user.objectId], 'Application'),该表达式会返回用户所属组关联的企业应用标识(如需显示应用名称,可提前在Azure AD中维护应用与组的映射关系,或结合表达式拼接名称)
  • 保存声明配置

2. 验证令牌内容

  • 发起SAML认证流程,用SAML调试工具捕获IDP返回的令牌
  • 检查令牌中是否包含AccessibleApps声明,确认内容为用户可访问的应用列表

方案二:认证后通过Graph API查询应用列表

1. 为SP门户配置Graph API权限

  • 在Azure AD中找到你的SP门户应用,进入「API权限」
  • 添加Microsoft Graph权限:
    • 若以用户上下文查询:添加委托权限Application.Read.All
    • 若以服务上下文查询:添加应用权限Application.Read.All + GroupMember.Read.All
  • 提交权限请求并完成全局管理员同意

2. 在SP门户中实现查询逻辑

  • 用户完成SAML认证后,提取令牌中的user.objectId或userPrincipalName
  • 调用Graph API接口查询用户可访问的应用:
    • 查询用户直接关联的应用:GET https://graph.microsoft.com/v1.0/users/{user-id}/ownedObjects?$filter=objectType eq 'Application'
    • 查询通过组关联的应用:GET https://graph.microsoft.com/v1.0/users/{user-id}/memberOf/microsoft.graph.group/appRoleAssignments
  • 解析API返回结果,在门户中渲染应用列表

关键注意事项

  • 权限遵循最小原则,避免授予超出需求的Graph API权限
  • 若用户关联的应用/组数量较多,建议缓存查询结果,减少API调用频次
  • 复杂的应用关联逻辑优先用Graph API实现,SAML声明更适合简单场景

内容的提问来源于stack exchange,提问作者eswarprasad modalavasa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:42:10