Amazon Bedrock AgentCore Identity 近期正式支持私有密钥 JWT 客户端认证。该功能允许智能代理在向身份提供商(IdP)请求访问令牌时,使用 AWS KMS 签名的 JSON Web Token(JWT)断言替代以往需要共享的 OAuth 2.0 客户端密钥,显著降低密钥泄露风险。
在这套流程里,开发者只需将公钥注册到身份提供商,对应的私钥则始终保存在 AWS Key Management Service(KMS)中,并不外传。当代理需要访问下游 API 时,AgentCore Identity 会代表代理调用 KMS 对 JWT 断言进行签名,再将签名后的断言发往身份提供商,由身份提供商使用预先注册的公钥核验签名并颁发令牌。
以读取客户订单历史的客服代理为例,其完整的机器间(M2M)令牌请求链如下:代理首先调用 AgentCore Identity 的 GetResourceOauth2Token 接口,请求一张访问订单 API 的令牌。AgentCore Identity 从凭证提供者配置中取出客户端 ID、KMS 密钥 ARN 及签名算法(RS256、PS256 或 ES256),然后构建一个短时效的 JWT 客户端断言。断言中会填入必要的声明载荷,开发者还可以按需添加额外的头部或载荷声明,比如密钥标识符或证书指纹。
构建完成后,AgentCore Identity 调用 kms:Sign 操作,由 KMS 非对称签名密钥对断言进行签署,签名结果返回给 AgentCore Identity——整个过程中私钥始终没有离开 KMS。随后,AgentCore Identity 将签名后的断言作为客户端凭证,附带 grant_type=client_credentials 和 client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer 参数,发送至身份提供商的令牌端点。身份提供商验证签名无误后,把访问令牌返回给 AgentCore Identity,再由其转交给代理,代理即可使用该令牌调用订单 API。
Private Key JWT 客户端认证支持多种授权流程。其中机器对机器(M2M)场景下,代理以自身身份运行,无需人类参与,适用于后台数据同步或客服系统内部服务调用等场景。
此外,这篇官方博文还将展示具体配置步骤,包括如何创建 KMS 签名密钥、如何将公钥注册到身份提供商,以及如何在 AWS 管理控制台中设置凭证提供者。代理的每次访问行为都会被记录在 AWS CloudTrail 事件中,方便审计和追溯。
热门跟贴