首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JWT与IncompleteSignatureException结合使用AWS网关身份验证错误

使用JWT与IncompleteSignatureException结合使用AWS网关身份验证错误
EN

Stack Overflow用户
提问于 2016-05-18 14:48:58
回答 2查看 22.4K关注 0票数 9

我在哪里

我目前正在为AWS设置Auth0委托身份验证。我遵循了下面的文档和教程,但我有一个应用程序,而不是他们的示例应用程序:

https://auth0.com/docs/quickstart/spa/angular2/aws

https://auth0.com/blog/2015/11/10/introducing-angular2-jwt-a-library-for-angular2-authentication/

https://auth0.com/docs/client-platforms/angular2

https://auth0.com/docs/integrations/aws-api-gateway/part-2

什么在起作用

  • Auth0注册从我的Angular2应用程序是正确的工作,我得到一个令牌。
  • 当我调用Authenticate时,Auth0的AuthHttp组件将承载令牌附加到认证头上。

不起作用的东西

  • 状态403来自AWS网关的响应,指示Cloudfront IncompleteSignatureException;“身份验证标头丢失等号”。

身份验证标头是

代码语言:javascript
运行
复制
Authentication: Bearer edJ0e...[I've truncated for brevity]

AWS是否需要使用密钥值对的不同类型的身份验证?我如何告诉AWS网关,它应该寻找一个JWT?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-19 21:27:25

我猜您已经为您的API端点启用了AWS_IAM身份验证。如果您不打算使用它,则需要禁用它。如果您计划在JWT之外使用AWS_IAM身份验证,那么您必须使用不同的字段发送JWT令牌。

您所链接的第5部分 of Auth0教程:

最后一步是从浏览器客户端将JWT传递给方法。标准方法以Authorization头作为承载令牌,如果关闭IAM授权并仅依赖OpenID令牌进行授权,则可以使用此方法(还需要将授权头映射到传递给AWS函数的事件数据中)。如果您使用的是IAM,那么AWS将使用Authorization报头来包含消息的签名,并且您将通过将JWT插入到这个消息头中来破坏身份验证。您可以为JWT添加一个自定义头,也可以将其放入消息正文中。如果选择使用自定义标头,还需要对POST方法的Integration进行一些映射

票数 7
EN

Stack Overflow用户

发布于 2016-05-19 21:38:01

根据错误消息,听起来您已经配置了用于AWS_IAM身份验证的API。这要求您的请求使用AWS签名版本4进行签名。

为了执行API函数,您需要做以下三件事中的一件:

  1. auth0实例中所述,通过IAM/STS获取AWS凭据,并使用这些凭证对您的请求进行签名。
  2. 正如在马克·B的回答中所指出的,遵循auth0教程中步骤5中的说明,禁用AWS_IAM auth,并在Lambda中进行验证。
  3. 切换到使用自定义授权人直接在API层验证JWT。这将要求您使用Auth0提供的代码来验证令牌,然后构建您自己的授权程序结果。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37303110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档