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

AWS Cognito联合身份认证:基于AD(SAML)获取访问令牌需求咨询

实现基于AD SAML的Cognito联合身份认证(Enhanced简化流程)

嘿,刚接触AWS Cognito的话,你选的这个Enhanced简化流程确实是最贴合你需求的路径!我帮你把整个落地步骤拆得明明白白,照着走就行:

一、先搞定前期配置

这部分是基础,得先把Cognito和AD的连接搭稳:

  • 配置Cognito的SAML身份提供商
    1. 打开你的Cognito用户池,进入「身份提供商」页面,选择SAML类型
    2. 上传AD提供的SAML元数据文件(要是没有的话,手动填写AD的SAML实体ID、单点登录URL、证书信息也可以)
    3. 一定要做好属性映射:把AD返回的SAML属性(比如email、username这类)对应到Cognito用户池的标准属性或自定义属性,不然Cognito认不出用户
  • 配置Cognito应用客户端
    1. 在用户池的「应用客户端」里创建或选择合适的客户端,记得开启「联合身份认证」选项
    2. 把刚才配置的AD SAML提供商加到这个客户端的身份提供商列表里
    3. 填好回调URL、注销URL,必须和你实际应用的地址完全匹配,不然跳转时会报错

二、Enhanced流程的实际执行步骤

就像你说的,核心分两大阶段:AD拿令牌,再换Cognito的访问令牌

第一步:用户通过AD认证,获取SAML断言

  • 你的应用引导用户访问Cognito的授权端点,记得在请求里带上identity_provider=你的AD-SAML提供商名称参数,告诉Cognito要用AD来做身份认证
  • Cognito会自动把用户重定向到AD的登录页面,用户输入AD账号密码完成验证
  • AD验证通过后,会返回一个加密的SAML断言(也就是身份令牌)给Cognito,部分配置下也可能直接返回给你的应用

第二步:用SAML断言交换Cognito访问令牌

  • 如果是Cognito收到了SAML断言,它会自动处理,然后跳转到你配置的回调URL,同时返回一个authorization code
  • 你的应用拿着这个code,加上应用客户端ID、客户端密钥(如果是机密客户端的话),调用Cognito的/oauth2/token端点,请求参数要包含grant_type=authorization_code、code=刚才拿到的授权码、redirect_uri=你的回调地址
  • Cognito验证无误后,就会返回你需要的access_token(访问令牌),同时还有id_token和refresh_token,其中access_token就是用来访问AWS服务或自定义后端的核心凭证

三、几个容易踩坑的注意点

  • 属性映射必须准确:AD返回的字段和Cognito的属性对应不上的话,Cognito可能无法创建用户或识别已存在的用户
  • 令牌有效期可调整:在Cognito应用客户端设置里,能修改访问令牌的有效期,默认是1小时,可根据业务需求调整
  • 别忘了错误处理:比如用户AD密码输错、SAML断言过期、令牌请求失败这些场景,都要给用户合适的提示或跳转逻辑
  • 测试工具推荐:可以用Postman模拟令牌请求,或者直接用Cognito用户池里的「测试」功能,先验证SAML提供商的配置是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:34:27