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

单个Cognito用户池适配多Azure AD企业应用的可行方案咨询

解决方案

以下几种方案都不需要修改你现有的认证架构(不绕过Cognito、不调整ALB转发逻辑),可以实现新应用的管理员专属访问控制:

方案1:复用现有Azure AD企业应用,结合Cognito应用客户端+条件访问策略

  • 在Cognito用户池中创建新的应用客户端,专门给这个管理员应用使用,记录下它的Client ID。
  • 登录Azure AD管理中心,找到已关联Cognito的企业应用,新建一条条件访问策略:
    • 云应用选择该企业应用;
    • 添加「客户端应用」条件,指定刚创建的Cognito新App Client ID;
    • 授予规则设置为仅允许你的管理员用户组访问。
  • 配置新应用对应的ALB认证规则,使用这个新的Cognito App Client ID。
    这样,访问新应用时,ALB会用新的App Client触发认证流程,Azure AD会自动校验用户是否属于管理员组,不符合条件的直接拒绝;原有应用使用旧的App Client,不受该策略影响。

方案2:用Cognito Lambda触发器做权限校验

  • 先给管理员应用创建独立的Cognito应用客户端。
  • 编写一个Pre Token Generation Lambda函数:在函数中解析用户从Azure AD获取的ID Token,检查用户是否属于管理员组(可通过Token中的groups声明判断,或调用Azure AD API查询),若用户不属于管理员组,则抛出错误拒绝生成令牌。
  • 将这个Lambda函数绑定到新App Client的Pre Token Generation触发器上。
    当用户通过这个App Client认证时,只有管理员能拿到有效令牌,ALB才会放行;原有应用的App Client不触发该Lambda,保持全员可访问的逻辑。

方案3:Azure AD应用角色+Cognito声明映射+ALB令牌验证

  • 在Azure AD的现有企业应用中,创建一个「管理员」应用角色,并将该角色分配给目标管理员用户/组。
  • 回到Cognito用户池的Azure AD身份提供商配置,将Azure AD返回的roles声明映射到Cognito的自定义声明(例如custom:app_role)。
  • 创建新的Cognito应用客户端,然后在ALB的认证设置中添加令牌验证规则:要求令牌中custom:app_role的值等于你定义的管理员角色名称。
    这样,只有拥有该角色的用户,其令牌才会被ALB认可,进而访问新应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:22:48