微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在AWS Lambda中使用id_token与access_token的最佳实践

如何解决在AWS Lambda中使用id_token与access_token的最佳实践

考虑一个由AWS-ApiGateway和-Lambda组成的restapi后端。

在成功进行oauth2身份验证之后,AWS Cognito在代码授权授予流程中同时向客户端返回 access_token id_token

在api调用期间,lambda函数需要知道经过身份验证的客户端的电子邮件地址,因此我基本上有2个选择:

  1. Authorization标头中发送 id_token ,该标头已通过ApiGateway验证并传递到Lambda。让Lambda解密 id_token 并访问其中包含的电子邮件地址。
  2. Authorization标头中发送 access_token ,该标头由ApiGateway使用scope=openid email进行验证,并传递给Lambda。让Lambda使用GET标头中的 access_token /oauth2/userinfo端点进行Authorization调用,以获得电子邮件地址。

最佳做法是哪一种?为什么?

解决方法

好问题:

  • 访问令牌被设计为短暂的API凭证,包含范围/声明等
  • Id令牌的作用不同,就像我的blog post
  • 一样,向客户端提供身份验证证明

但是,如果您使用的是AWS Cognito,则存在供应商限制,即无法自定义访问令牌-例如包含电子邮件地址。

因此,第一次接收到令牌时,API或网关通常会做更多工作-例如查找用户信息或来自其他来源的声明-然后将其缓存以供使用相同访问令牌的后续请求。 / p>

也就是说,首选选项2,而不是以不自然的方式使用id令牌。

有关此设计模式的更多信息,请参见:

不知道您是否正在寻找API Gateway自定义授权者,但如果是这样,我的博客中有关于此here

的内容

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。