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

如何在以Azure AD为身份提供商的Cognito中实现客户端凭证流

实现方案

Cognito User Pool 本身只代理面向用户的交互式OAuth流(授权码流、隐式流、密码流等),不支持代理第三方IdP的客户端凭证流,因此不需要尝试让Cognito转发客户端凭证请求到Azure AD,直接走「Azure AD颁发M2M令牌 + 服务侧兼容验证双源令牌」的逻辑即可。

具体实现步骤

  • 第一步:在Azure AD注册定时服务的客户端应用
    可单独为无值守定时服务注册专属的Azure AD应用(也可以复用现有应用,推荐权限隔离单独注册),进入应用的【证书和密码】板块生成客户端密钥,留存好该应用的客户端ID、客户端密钥、所属Azure AD租户ID。
  • 第二步:配置Azure AD侧的应用访问权限
    找到之前对接Cognito的Azure AD应用(即提供服务的资源方应用),进入【公开API】板块添加应用权限(注意不要选委托权限,委托权限仅适用于有用户上下文的场景),然后给定时服务的Azure AD应用授予该权限,必须完成管理员同意操作,权限才会生效。
  • 第三步:适配Cognito侧的令牌验证规则
    打开Cognito用户池配置,进入【App integration】->【Resource servers】,新增资源服务器:
    • 标识符字段填写资源方Azure AD应用的Application ID URI
    • 自定义作用域填写第二步中配置的应用权限名称
      同时在服务的现有令牌验证逻辑中,新增对Azure AD颁发令牌的校验规则,两种令牌分开校验:
    1. 普通用户登录场景下Cognito自颁发的access token:校验issuer为Cognito用户池地址即可,逻辑和现有保持一致
    2. 服务间调用场景下Azure AD颁发的access token:校验以下核心字段合法性
      • iss:值为https://sts.windows.net/<你的Azure AD租户ID>/
      • aud:值为资源方Azure AD应用的客户端ID或Application ID URI
      • roles/scp:包含第二步中配置的服务访问权限
  • 第四步:定时服务获取令牌发起调用
    定时服务直接调用Azure AD的oauth2/token端点,用client_credentials授权类型获取令牌,请求示例:
    curl --location --request POST 'https://login.microsoftonline.com/<你的Azure AD租户ID>/oauth2/v2.0/token' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'client_id=<定时服务的Azure AD应用客户端ID>' \
    --data-urlencode 'client_secret=<定时服务的Azure AD应用客户端密钥>' \
    --data-urlencode 'grant_type=client_credentials' \
    --data-urlencode 'scope=<资源方Azure AD应用的Application ID URI>/.default'
    
    拿到返回的access token后,放在请求头Authorization: Bearer <access_token>中调用目标服务,服务按第三步规则校验通过即可完成鉴权。

简化替代方案(适用于无需打通Azure AD权限体系的场景)

如果你的业务安全规则没有要求服务间调用的权限必须走Azure AD统一管控,可以直接用Cognito原生的机器对机器(M2M)认证能力,完全不需要和Azure AD交互:

  • 进入Cognito用户池的【App integration】->【App clients】,新增应用客户端,启用客户端凭证流,生成对应的客户端ID和客户端密钥
  • 定时服务直接调用Cognito的oauth2/token端点,用client_credentials授权类型获取Cognito自颁发的access token
  • 服务侧的令牌验证逻辑和现有普通用户登录场景完全一致,不需要做任何额外适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 14:42:01