使用带有Gateway API的Cognito用户池授权程序的documentation只表示我应该:
- 调用使用用户池授权程序配置的API方法,在Authorization标头或其他标头中提供未过期的标记 你的选择。
醇>
网上的其他一些文字也反映了这一点。
但是,当我尝试使用令牌时,收到一条错误消息,通知有关Credentials
,Signature
,Signed Headers
参数(以及Date
标题)的丢失。我正在使用的令牌很可能是正确的,因为它通过了授权人网站gui中的测试。
我的问题分为两部分:
这是否意味着使用Cognito用户池授权程序需要 我签署每个请求?有没有办法将它配置为just 接受有效的令牌?
如果我想简单地保持对Amazon Gateway的HTTP调用 仅使用令牌授权他们(以便他们可以很容易地 手工执行,从Python后端等),我被迫写了一个 使用Lambda的自定义授权者?或者有更好的选择吗?
答案 0 :(得分:1)
Cognito用户池授权程序不需要请求上的签名。您只需在每个请求的授权标头中传递Cognito生成的OpenID Connect身份令牌的JWT版本。
if (myList != null) {
for (String item : myList) {
if (item != null) {
...;
...;
}
}
}
这应该回答你的两个问题。
我认为您对Cognito Identity服务感到困惑,该服务从公共身份提供商(Facebook,亚马逊,用户池等)交换有效身份以获取临时AWS凭证。您可以使用Cognito Identity服务中的AWS凭据来签署请求。
如果您只使用用户池,则成功验证的结果是OIDC标识令牌和JWT访问令牌。 API Gateway在配置了用户池授权程序时,使用身份令牌对请求进行身份验证。