【问题标题】:AWS cognito Json Web Token and Json Web KeyAWS cognito Json Web Token 和 Json Web Key
【发布时间】:2019-03-16 04:40:05
【问题描述】:

我一直在使用 javascript SDK(使用 Amazon 的 GitHub 示例)在前端的 Angular 应用程序和后端的 .Net Core 应用程序中使用 AWS Cognito。我想知道的是,为什么我似乎无法发现有关访问令牌的所有重要信息似乎都是公开的。 例如,用户池 ID、IdentityPoolId 和 ClientId 只是 javascript 中的变量,因此任何人都可以使用。有了这些变量,应该很容易获得 JWK,因为这是一个基于 clientid 和 userpool id 的公共亚马逊网页。这些密钥不应该是私有的吗?如果这些密钥是公开可用的,是不是可以模仿登录页面并窃取登录信息?

我尝试搜索诸如如何保护您的密钥和 JWK 之类的内容,但是当我这样做时,我只能获得有关如何签署和解密 access_tokens 的结果。

客户端密码

由于下面的答案建议使用客户端密码,我对此进行了调查。使用 javascript cognito sdk 时未使用客户端密码。在文档中,他们告诉您不要生成密钥,因为它不适用于 javascript sdk。这是因为它不会增加任何额外的安全性,因为应用程序在客户端运行,因此所有这些信息都是公开的。 目前还不清楚所有这些客户端 ID/令牌的安全性,因为所有内容都可以在网上找到。

我的解决方案

如果 any1 对我的解决方案感兴趣,那就是:所以基本上我错过了使用 JWT 和 JWKS 是 JWK 只能用于验证 JWT 签名。无法使用 JWK 对令牌进行签名,在亚马逊的情况下,JWT 的签名是由 cognito 的 idp 中某处的证书完成的。因此,访问 JWK 并不是真正的安全问题。 模仿登录页面并使用我的 cognito id 仍然是可能的,但还有其他方法可以增加安全性。

【问题讨论】:

    标签: amazon-web-services access-token amazon-cognito aws-sdk-js


    【解决方案1】:

    在 AWS Cognito 上创建用户池应用程序客户端时,它们是生成客户端密钥的一个选项,客户端密钥用于保护您的用户池仅用于授权应用程序(那些使用密钥的应用程序) )。

    客户端密码是 oauth 标准的一部分,您可以阅读更多相关信息 here

    它与您的 ClientId 和 poolId 一起使用

    var poolData = {
        UserPoolId : '...', // your user pool id here
        ClientId : '...' // your app client id here
        Secretkey: '...'// your app secret key here
    };
    var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
    

    【讨论】:

    • 是的,我已经看到了该选项,并且我将其用于服务器到服务器的身份验证,但我无法在 aws-javascript-sdk 中使用它。此外,即使我能够使用它,它是否只是存储在 javascript 中并因此公开暴露的另一个变量?
    【解决方案2】:

    当您使用 java-script 应用程序时,您必须使用客户端密钥,因为它提供了安全性。

    因此,当您的所有其他信息都公开时,例如用户池 ID、客户端 ID 等,恶意用户无法调用 AWS Cognito 并获取密钥,因为拼图中缺少客户端密钥。

    【讨论】:

    • 那么我将如何使用该密钥?由于我提到的原因,aws-javascript-sdk 不支持密钥。这意味着我必须进行服务器到服务器的调用并提供密钥,但是使用 aws-javascript-sdk 根本没有意义。
    • @blaataap 好的,我现在明白了。是的,即使我不确定什么是 aws-javascript-sdk 的最佳用例。
    猜你喜欢
    • 2015-03-27
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 2015-06-28
    • 2015-09-18
    • 1970-01-01
    • 2016-12-20
    相关资源
    最近更新 更多