AWS Cognito-AdminInitiateAuth与InitiateAuth

本教程将介绍AWS Cognito-AdminInitiateAuth与InitiateAuth的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

AWS Cognito-AdminInitiateAuth与InitiateAuth 教程 第1张

问题描述

我们希望利用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中的InitiateAuthAdminInitiateAuth推荐答案调用之间的区别。
要阐明API调用的用法,请执行以下操作:

    InitiateAuth为客户端/浏览器端API调用,该API调用不需要任何敏感凭据即可发起质询等参数。

    AdminInitiateAuth是在服务器端运行的,API调用始终需要开发者凭证才能成功响应。这是因为API调用是AWS SigV4签名的API调用。

此外,这两个API调用都支持不同的Auth流,如下所示。

InitiateAuth支持以下授权流:

    USER_SRP_AUTH

    REFRESH_TOKEN_AUTH

    USER_PASSWORD_AUTH

    CUSTOM_AUTH

请注意,AWS CLI文档[a]当前声明ADMIN_NO_SRP_AUTH是一个可能的值。但是,我已经在自己端测试了API调用,我可以确认CLI的文档当前是不正确的。

更新(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的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。