Pra*_*hat 13 authentication amazon-web-services amazon-cognito
我一直在制作一个网络应用程序.(S3上的Angular 2和通过API网关的lambda中的API).对于身份验证,我使用了cognito和自定义授权程序(我通过自定义授权程序和cognito将我的身份验证配置为与Google和Facebook bith一起使用).在自定义授权器的情况下,我通过authroization标头传递令牌,我的自定义授权器验证它.
我正在寻找有关我应该向前推进的建议,以及它们的优缺点.我能想到的是:
AWS cognito:
优点
缺点
自定义授权者
优点
缺点
所有这一切,我现在倾向于自定义授权.这里需要有关该主题的建议.
PS:我知道我发布的问题没有明确的答案,但对于那些试图决定其应用程序身份验证的人来说会有很大的帮助.
好的,身份验证和安全性确实很难,AWS安全团队已经考虑过很多问题,您可能没有想到并实施这些问题并使您的应用程序不安全.我实现了我的自定义授权器,以期望一个授权令牌(通过授权头传递),这是一个base64编码的值,它会在会话中的所有请求中重复.事实证明,由于RC4和diffie hellman的弱点,这使得TLS容易受到攻击.如果我们只是使用IAM使用cognito,那么AWS sigv4请求签名可以保护您免受这些弱点的影响.关注https://www.youtube.com/watch?v=zmMpgbIhCpw了解更多详情.
使用cognito/IAM的另一个好处是它可以保护您免受CSRF重放攻击.请求签名涉及使用时间戳.IAM将拒绝超过约5分钟前签署的任何请求.
简而言之,如果可以的话,请避免使用自定义授权器,并将IAM与cognito一起使用.你会感谢你自己.
这是一个简短的答案,但是,为什么不同时使用它们呢?
使用实际实现的自定义授权方以使用 Cognito 用户池和 Cognito 联合身份。
当您使用 Cognito 时,您可以选择不使用所有内容。
例如,我设置了一个自定义授权器,而我的 Lambda 实际上使用 Cognito 用户池 API 来验证用户。我让 Cognito 用户池处理所有密码、令牌等。
| 归档时间: |
|
| 查看次数: |
3959 次 |
| 最近记录: |