我正在尝试用于我的Web App的Cognito用户池的登录功能。我能够获得令牌,但我不知道在哪里找到解密它的秘密。我在其中一篇文章中读到,该秘密是用户池中应用程序的秘密标识。但是,对于Javascript SDK,秘密标识是空白的。这是否意味着我的秘密也应该是空白的?我试过这个,但我收到一条消息,说“错误:PEM_read_bio_PUBKEY失败”。在哪里可以从认知中找到JWT的秘密密钥
回答
AWS使用RS256算法不需要保密,但公共密钥进行解码。
在这里,你会发现你的游泳池JWKS:https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json
(见http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html#amazon-cognito-identity-user-pools-using-id-and-access-tokens-in-web-api)
这里描述转化JWK公钥的过程:https://mobile.awsblog.com/post/Tx3JK25U7Z9EUIU/Integrating-Amazon-Cognito-User-Pools-with-API-Gateway(第“了解代码”)。
抱歉,但这是明显错误的--RS256是一种不对称算法,需要公钥和私钥。正确的是,为了验证JWT,您不需要用于签名的私钥。 –
同意B M评论。 – javierfdezg
我回答的问题是“在哪里找到解密的秘密”(而不是关于RS256的一般功能),所以我认为我的答案是正确的。 – JakubM
要纠正对方的回答:RS256是一种非对称加密算法,需要公共和私有密钥。另见RS256 vs HS256: What's the difference?和https://en.wikipedia.org/wiki/RSA_(cryptosystem)。
正确的是,对于验证JWT,您不需要用于对其进行签名的私钥,而只需要AWS根据https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json
提供的公钥。
我从那里得到了一个Json数组,哪个属性包含令牌的公钥?尝试使用“n”属性中的值抛出签名是无效的 –
@JefreeSujit您需要将JWK转换为pem格式,并根据已经共享的引用链接进行转换。 JWT将包含一个“孩子”,它决定你需要使用哪个JWK。 – ecoe
我试图通过所有这种类型的东西的工作为好。
为此我把同来的如何做到这一点的东西,对工作的例子我
1)Verifying a JWT token with a 'secret' - aka Issuers RSA public key
2)Using an Issuers public SSL certificate to verify JWT tokens and other signatures
- 1. 我在哪里可以找到Facebook的API密钥和API秘密?
- 2. 哪里可以找到YouTube API密钥?
- 3. 哪里可以找到espn api密钥?
- 4. Angular CLI - 秘密密钥加密密钥:jwt-simple不起作用
- 5. 我应该在哪里寻找消费者密钥和秘密以注册OAuth?
- 6. Pyqtgraph:在哪里可以找到密钥的信号?
- 7. 从哪里可以找到应用程序的秘密在Dropbox的android?
- 8. 在哪里可以找到tabrisjs android签名密钥?
- 9. 在哪里可以找到API和密钥?
- 10. 我在哪里可以找到密钥库文件?
- 11. 在哪里可以找到电报API密钥
- 12. 我在哪里可以找到Heroku SSH密钥?
- 13. Bitbucket - 在哪里可以找到存储库SSH密钥?
- 14. 我在哪里使用Facebook API密钥和API秘密
- 15. C#:找到一个不知道它在哪里的密钥
- 16. 密钥保管库密钥与秘密
- 17. 我可以在哪里看到“密钥库”的详细信息?
- 18. 密钥库在哪里?
- 19. 转换字符串,以秘密密钥
- 20. 应用程序的秘密在哪里?
- 21. 放在哪里的OAuth应用秘密
- 22. Django Tastypie秘密密钥
- 23. 我在哪里可以找到我的Facebook应用程序ID和密钥?
- 24. 我在哪里可以找到我的Google Font API密钥? (新手)
- 25. 我在哪里可以找到我的雅虎开发者API密钥?
- 26. 我在哪里可以找到我的Azure帐户名称和帐户密钥?
- 27. 我可以在哪里放置Stripe的可发布密钥?
- 28. 发送秘密密钥到API
- 29. jwt密钥无效
- 30. HMAC/Javascript - 在哪里存储秘密?
关键是可以作为json的键,你可以从用户池下载。然后您需要将其转换为PEM密钥以便用它来解码智威汤逊。 –