【问题标题】:How to check the validity of the credentials from Amazon Cognito at server side(java)如何在服务器端检查来自 Amazon Cognito 的凭证的有效性(java)
【发布时间】:2019-05-14 08:20:03
【问题描述】:

现在我正在开发一些 iOS 应用程序。此应用程序使用 Amazon Cognito 来制作每个用户的经过身份验证的 ID 和凭证。

另一方面,这个应用程序使用我原来的 WebAPI 服务器。我想使用 Cognito id 和/或凭据检查用户在服务器上的有效性。

我应该使用哪个 AWS API 在服务器上进行此验证(Java 代码)?

【问题讨论】:

    标签: amazon-cognito


    【解决方案1】:

    唯一其他答案中的信息似乎有点不正确,所以我想稍微更新一下。

    提到的 API Gateway 方法很棒并且有效,但它仍然在做同样的事情,你可以手动做。使用 API Gateway,它会进行签名检查,但它仍然使用传递的令牌,验证下面讨论的声明,然后将其规范化为上下文对象供您使用。

    您可以发送任何令牌,并且可以验证给定令牌是否由 AWS 签名。 此值不能被欺骗。 如果验证成功,那么您可以依赖声明中的所有数据与令牌签署时存在的值相同由亚马逊提供。

    另一个答案中的注释正确指示了包含此信息的链接:https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html

    使用 Javascript,可以通过以下方式验证令牌:

    https://gist.github.com/bradennapier/c996672944ebf511410eb45c0395f525

    请注意,这是完成功能发现过程中的第一次,并不代表生产就绪的解决方案。仅供参考。

    AWS 也有一些适用于 javascript 和 python 的示例:https://github.com/awslabs/aws-support-tools/tree/master/Cognito/decode-verify-jwt - 我在查看该示例时确实注意到,当给定 access 令牌时它不会正确验证,并且仅适用于 id 令牌。

    【讨论】:

    • 我喜欢这个答案。只是对问题和“另一个答案”的快速澄清:):这个问题专门关于发送 Cognito“IdentityId”,而不是 JWT。 IdentityId 未签名且不可验证,它本质上应该是 JWT 中的“子”声明中的内容。
    【解决方案2】:

    将 Amazon Cognito 颁发的 IdentityId 从设备发送到后端并不安全,因为 IdentityId 可能会被欺骗。安全验证 API 请求是否由经过身份验证的用户发出的最佳方法是使用 Amazon API Gateway。您可以使用 Amazon AWS API Gateway 代理您现有的后端(或使用 API Gateway+Lambda 替换后端),API Gateway 可以选择性地使用 AWS Signature Version 4 Signing Process 自动对请求进行身份验证。

    【讨论】:

    • 非常感谢。到目前为止,我还不知道 Amazon API Gateway。我试着检查一下。
    • 嗯???那么,向 APIG 发送令牌不能被欺骗吗?您可以将令牌发送到任何地方。事实上,有一个来自aws的文档来验证后端的令牌docs.aws.amazon.com/cognito/latest/developerguide/…还有一种方法可以使用这个docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/…在后端完成所有的身份验证逻辑
    • API Gateway 可以自动授权使用 AWS v4 签名的请求(授权其他 AWS 请求的方法相同)。使用 AWS Mobile SDK,这些请求还包括用户的身份,如 stackoverflow.com/questions/32945385/… 所述。至少以前是这样,我想现在仍然如此。您可以看到这个问题和答案在一段时间前就已经存在,因此它没有考虑 Cognito 的用户池之类的东西,但我认为它们仍然可以类似地工作。
    猜你喜欢
    • 2017-06-18
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2019-07-02
    相关资源
    最近更新 更多