gpt4 book ai didi

javascript - AWS Cognito - AdminInitiateAuth 与 InitiateAuth

转载 作者:数据小太阳 更新时间:2023-10-29 05:56:36 26 4
gpt4 key购买 nike

我们希望利用 AWS Cognito 通过如下所示的架构进行身份验证:客户端(浏览器)-> 我们的服务器 -> AWS Cognito

设置了各种配置后,initiateAuth 似乎与 AdminInitiateAuth 没有什么不同,所以我想了解在这些配置下,是否选择一个配置是否重要.

似乎当我创建一个带有client secret的应用程序并使用initiateAuth时,它似乎与adminInitiateAuth几乎相同的集成体验> 使用 ADMIN_NO_SRP_AUTH 身份验证流程。后者甚至不需要 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 参数,这对我来说似乎很肤浅。

我们还根据我们将安全处理的客户端 secret 生成签名。

最佳答案

我知道您想知道 Amazon Cognito 中 InitiateAuthAdminInitiateAuth API 调用之间的区别。阐明 API 调用的用法:

  • InitiateAuth 是客户端/浏览器端 API 调用,API 调用不需要任何敏感凭据来提供质询和其他参数。
  • AdminInitiateAuth 旨在在服务器端运行,API 调用始终 需要开发人员凭据才能成功响应。这是因为 API 调用是 AWS SigV4 签名的 API 调用。

此外,这两个 API 调用都支持不同的身份验证流程,如下所述。

InitiateAuth 支持以下身份验证流程:

  • USER_SRP_AUTH
  • REFRESH_TOKEN_AUTH
  • USER_PASSWORD_AUTH
  • CUSTOM_AUTH

请注意,AWS CLI 文档 [a] 目前指出 ADMIN_NO_SRP_AUTH 是一个可能的值。但是,我已经在我这边测试了 API 调用,我可以确认 CLI 的文档当前是不正确的。

更新(12/09/2019):看起来在写完这个答案后,Amazon Web Services 已将其文档更新为正确的可能值。文档现在说明如下:

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]。

引用资料

[一个]。 https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/initiate-auth.html

[b]。 https://www.npmjs.com/package/cognito-srp

关于javascript - AWS Cognito - AdminInitiateAuth 与 InitiateAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53755308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com