AWS Cognito - AdminInitiateAuth vs InitiateAuth(AWS Cognito-AdminInitiateAuth与InitiateAuth)
问题描述
我们希望利用AWS Cognito进行身份验证,其架构如下:client (browser) -> our server -> AWS Cognito
设置了各种配置后,initiateAuth
似乎与AdminInitiateAuth
没有什么不同,所以我想了解一下在这些配置下,是否选择其中一个很重要。
创建一个client secret
应用并使用initiateAuth
时,集成体验似乎与使用ADMIN_NO_SRP_AUTH
身份验证流程的adminInitiateAuth
几乎相同。后者甚至不需要AWS文档中所述的AWS凭证。我与Cognito的集成如下:
initiateAuth:
const payload = {
AuthFlow: "USER_PASSWORD_AUTH",
ClientId: cognitoClientId,
AuthParameters: {
USERNAME: username,
PASSWORD: password,
SECRET_HASH: generateSignature(username)
}
}
const response = await cognitoClient.initiateAuth(payload).promise();
adminInitiateAuth:
const payload = {
UserPoolId: userPoolId,
AuthFlow: "ADMIN_NO_SRP_AUTH",
ClientId: cognitoClientId,
AuthParameters: {
USERNAME: username,
PASSWORD: password,
SECRET_HASH: generateSignature(username)
}
}
const response = await cognitoClient.adminInitiateAuth(payload).promise();
您可以看到区别在于AuthFlow
值不同,调用的方法不同,ADMIN_NO_SRP_AUTH
需要UserPoolId
参数,这在我看来很肤浅。
我们还基于客户端机密生成签名,这是我们将安全处理的内容。
API
我知道您想知道Amazon Cognito中的InitiateAuth
和AdminInitiateAuth
推荐答案调用之间的区别。
要阐明API调用的用法,请执行以下操作:
InitiateAuth
为客户端/浏览器端API调用,该API调用不需要任何敏感凭据即可发起质询等参数。AdminInitiateAuth
是在服务器端运行的,API调用始终需要开发者凭证才能成功响应。这是因为API调用是AWS SigV4签名的API调用。
此外,这两个API调用都支持不同的Auth流,如下所示。
InitiateAuth
支持以下授权流:
- USER_SRP_AUTH
- REFRESH_TOKEN_AUTH
- USER_PASSWORD_AUTH
- CUSTOM_AUTH
更新(2019/12/09):看起来在编写此答案后,Amazon Web服务已将其文档更新为正确的可能值。文档现在说明以下内容:
ADMIN_NO_SRP_AUTH is not a valid value.
AdminInitiateAuth
支持以下授权流:
- USER_SRP_AUTH
- REFRESH_TOKEN_AUTH
- CUSTOM_AUTH
- ADMIN_NO_SRP_AUTH
- USER_PASSWORD_AUTH
InitiateAuth
:如果您希望您的用户通过身份验证进入您的Web应用程序。
示例用例AdminInitiateAuth
:任何需要服务器端身份验证或基于特定的AWS凭据访问过滤的用例,只有特定的IAM用户可以使用Cognito进行身份验证。
如george前面所述,InitiateAuth
将非常适合您的用例,因为您的应用程序是一个客户端应用程序。
此外,如果您关心安全性,可以将USER_SRP_AUTH与InitiateAuth
一起使用。有关在生产代码中使用USER_SRP_AUTH流的更多信息,您可以参考以下NPM文档[b]。
引用
[a]。https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/initiate-auth.html
[b]。https://www.npmjs.com/package/cognito-srp
这篇关于AWS Cognito-AdminInitiateAuth与InitiateAuth的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:AWS Cognito-AdminInitiateAuth与InitiateAuth
- 400或500级别的HTTP响应 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01