首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >登录到Amazon用户池的其余(或CLI) API是什么?

登录到Amazon用户池的其余(或CLI) API是什么?
EN

Stack Overflow用户
提问于 2016-06-21 10:20:37
回答 8查看 30.3K关注 0票数 44

如何使登录通过亚马逊认知REST API(用于用户池)在没有官方SDK?的平台上进行--注意,我要求的是用户池,而不是身份池。

提要

提供3种登录:

  • 联合登录(创建身份池)-使用诸如FB、Twitter、G+等社交连接
  • AWS托管登录(创建用户池)-使用亚马逊自己的托管注册、签名、忘记密码、重置密码服务
  • 开发人员提供了登录(我自己管理的自定义设计身份验证服务)

--我正在使用第二个(与用户池一起使用)

Amazon为android、iOS、javascript、Xamarin等提供了几个SDK,并且为在官方SDK支持的平台上构建其他平台提供REST API。我正在为另一个平台构建一个应用程序,因此,REST是我唯一的方法,因为我的平台没有官方的SDK。

认知REST为“注册”、“忘记密码”、“确认验证”等提供了各种端点,但令人惊讶的是, REST没有任何简单的登录/登录端点。

我有所有官方的CLI,用于“注册用户”、“确认注册”、“更改密码”、“验证电话号码”、“忘记密码”等。令人惊讶的是,在登录时没有提到CLI。I希望有一些类似于"$ aws cognito-idp log-in“的CLI,就像"$ aws cognito-idp sign-up”或"$ aws cognito-idp forgot-password“等。

另外,在本入门教程中,它讨论了“*在用户的成功身份验证之后,应该对接收到的令牌做些什么”。然而,它并没有讨论如何使用使成功的身份验证首先在认知用户池API中进行。示例仅适用于Android、iOS、javascript。对于没有SDK的平台,没有可用的身份验证示例。

因此,如何在没有官方SDK?的平台上,通过Amazon认知REST API(用于用户池)进行登录。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2016-08-20 05:42:11

更新:

正如您在下面的注释中所指出的,身份验证流程记录在这里:http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html。这可能有助于澄清身份验证流。

这在某种程度上违反了直觉,但对于那些不希望用户显式登录的移动应用程序来说,它确实是有意义的,而是为用户随身携带令牌。注意,在用于iOS的AWS用户池SDK中有一个显式的signin (登录) API。我没有使用它,但是我想它只是一个备用的客户端API来通过相同的InitiateAuth(),然后是一个RespondToAuthChallenge()流。iOS signin示例记录在这里- IOS SDK示例:在用户中注册

原文:

启动auth的认知用户池API文档是可在这里找到

如果您在SDK的某个SDK中实现了一个用户池应用程序(我在Swift for iOS中实现了一个应用程序),它的工作方式就变得更清晰了,因为JSON响应的日志记录是冗长的,如果您查看日志,您可以看到发生了什么事情。

但假设我理解您的问题:总之,您应该使用InitiateAuth(),对此的响应(来自认知用户池服务器)是一个挑战。然后执行RespondToAuthChallenge() ( API文档中也有文档),对此的响应是身份验证结果-假设密码/会话/令牌已被接受。

这两件事的结合,我相信,你所谓的登录,它的工作就像一个登录。在API中,设置它的方式是在用户未经身份验证时尝试获取用户信息,从而启动该InitiateAuth(),并且(无论如何,在iOS中)该API会对您编写的代码进行回调,以请求密码,并发送RespondToAuthChallenge()请求等。

票数 12
EN

Stack Overflow用户

发布于 2018-11-16 18:45:24

这个curl命令适用于我:

代码语言:javascript
运行
复制
curl -X POST --data @aws-auth-data.json \
-H 'X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth' \
-H 'Content-Type: application/x-amz-json-1.1' \
https://cognito-idp.us-east-1.amazonaws.com/

其中aws-auth-data.json是:

代码语言:javascript
运行
复制
{
   "AuthParameters" : {
      "USERNAME" : "yourusername@example.com",
      "PASSWORD" : "yourpassword"
   },
   "AuthFlow" : "USER_PASSWORD_AUTH",
   "ClientId" : "75........................"
}

用户池客户端必须允许USER_PASSWORD_AUTH才能工作--这是AWS端的设置。

票数 83
EN

Stack Overflow用户

发布于 2020-11-06 15:56:54

只是为了补充@andrewjj的答案。您可能会得到一个挑战(NEW_PASSWORD_REQUIRED)作为InitiateAuth响应。这是当你被要求更换护照时,在最初的登录。

您可以使用Postmancurl命令。本例期望使用邮递员。

  1. InitiateAuth -此步骤与@andrewjj相同

将其添加到Body中作为raw

代码语言:javascript
运行
复制
{
    "AuthParameters": {
        "USERNAME": "youremail@example.com",
        "PASSWORD": "temporary-password",
    },
    "AuthFlow": "USER_PASSWORD_AUTH",
    "ClientId": "2s........................"
}

设置headers

代码语言:javascript
运行
复制
X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth
Content-Type: application/x-amz-json-1.1

https://cognito-idp.us-east-1.amazonaws.com/发送请求,您可能需要更改区域。

如果收到此响应,则可以继续执行步骤2。

代码语言:javascript
运行
复制
{
    "AuthenticationResult": {
        "AccessToken": "eyJra........",
        "ExpiresIn": 3600,
        "IdToken": "eyJra........",
        "RefreshToken": "eyJjd........",
        "TokenType": "Bearer"
    },
    "ChallengeParameters": {}
}
  1. RespondToAuthChallenge -这是新的一步

如果你收到像这样的挑战:

代码语言:javascript
运行
复制
{
    "ChallengeName": "NEW_PASSWORD_REQUIRED",
    "ChallengeParameters": {
        "USER_ID_FOR_SRP": "1231-......",
        "requiredAttributes": "[]",
        "userAttributes": "{\"email_verified\":\"true\",\"email\":\"youremail@example.com\"}"
    },
    "Session": "Sfas......"
}

你需要设置新密码。将其添加到Body中作为raw

代码语言:javascript
运行
复制
{
    "ChallengeName": "NEW_PASSWORD_REQUIRED",
    "ChallengeResponses": {
        "USERNAME": "youremail@example.com",
        "NEW_PASSWORD": "newpassword"
    },
    "ClientId": "2s........................",
    "Session": "Sfas......(use one from the InitiateAuth response)"
}

设置headers

代码语言:javascript
运行
复制
X-Amz-Target: AWSCognitoIdentityProviderService.RespondToAuthChallenge
Content-Type: application/x-amz-json-1.1

https://cognito-idp.us-east-1.amazonaws.com/发送请求,您可能需要更改区域。

再次执行步骤1以接收令牌。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37941780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档