2016-08-27 4 views
1

TL; DR아마존 Cognito 로그인

이유가없는 AWS Cognito/AWS Cognito ID 공급자에 SignUp 또는 ChangePassword이 같은 방법으로 authenticate (또는 login)?

-

가 나는 API 흐름으로 AWS Cognito를 구현하는 방법을 이해하는 데 어려움을 겪고 있어요. 나는 이것을 광범위하게 연구했고, 기능이 너무 분명해서 내가 뭔가를 오해하고 있어야한다는 것을 느낀다.

이 API는 Android, iOS 및 SPA를 제공합니다. 나는이 같은 엔드 포인트 뭔가, 내 API를 통해 이동합니다 기본 흐름을 상상 : 그것은 사용자/비밀번호를 받아들이

/v1.0/authenticate/ 

, 서버에 PHP는 이런 짓을 할 것이다 :

require 'vendor/autoload.php'; 

$sdk = new Aws\Sdk([ 
    'region' => 'us-east-1', 
    'version' => 'latest' 
]); 

$client = $sdk->createCognitoIdentity(['profile' => 'app-test-cognito']); 

$result = $client->login([ 
    'ClientId' => '6p16oao60fvakje31lexabcmplgecliecd99ntid', 
    'Username' => $user, 
    'Password' => $pwd]); 

그리고 $result

{ 
    "result": "success", 
    "token": "<the token>" 
} 

같은 JSON 문자열의 것이 될 것입니다 그리고 token는 로컬 스토리지/메모리에 저장 것이다 클라이언트에 반환되는 만료 될 때까지 Authorization: Bearer <token>을 사용하여 모든 다른 API 호출에서이를 반환합니다. 토큰은 API를 떠나지 않고 각 호출에서 만료되도록 테스트 할 수있는 JWT가 될 것이며 불변의 userId를 포함하며 API 기반의 비밀 또는 서명 테스트를 사용하여 해독하여 신뢰할 수 있다고 생각합니다.

그러나 '에서 AuthenticateUser'라는 JS 방법이 표시 자바 스크립트를 사용하여이 최근 블로그 포스트를 제외하고 존재 이런 일이 있음을 거의 또는 전혀 표시가 :

https://mobile.awsblog.com/post/Tx2O14ZY8A5LFHT/Accessing-Your-User-Pools-using-the-Amazon-Cognito-Identity-SDK-for-JavaScript (나는이 링크를 발견 이 질문에 : What is the REST (or CLI) API for logging in to Amazon Cognito user pools, 내 것과 유사합니다, 나는 허용 할 것이지만, 중복은 아닙니다.)

하지만 Github 레포에 did a search for 'authenticateUser'으로갔습니다. 그런 방법을 찾지 못했습니다. 나도 did the same search in the PHP repo. Nope.

실제로이 (아래)는 실제 작동하는 Signup이므로 이처럼 쉬운 인증도 작동한다는 결론을 내릴 것으로 보입니다. 나는 무엇이 없는가 ??

require 'vendor/autoload.php'; 

$sdk = new Aws\Sdk([ 
    'region' => 'us-east-1', 
    'version' => 'latest' 
]); 

$client = $sdk->createCognitoIdentityProvider(['profile' => 'app-test-cognito']); 

$result = $client->signUp([ 
    'ClientId' => '6p16oao60fvakje31lexabcmplgecliecd99ntid', 
    'Username' => 'fakeexampleusername', 
    'Password' => 'a#--sldjf383af09aw3jJJJL', 
    'UserAttributes' => [ 
     [ 
     'Name' => 'email', 
     'Value'=> '[email protected]' 
     ], 
    ], 
]); // based on pool settings, even sends out an email automatically. 

참고 : 나는 또한 좋은 듯하지만 중 하나를 (당신이 ... 자신의 서버에 전달하고 그들이 제공하는 양식을 사용해야합니다)이 있고 SDK - 로그인하지 않은 Auth0을, 체크 아웃; 폭풍우는 가격 범위를 벗어났습니다.

도움 주셔서 감사합니다.

답변

3

간단한 "인증"API가 없습니다. 인증 흐름은 "InitiateAuth"호출과 일련의 RespondToAuthChallenge로 시작됩니다. 모든 과제 (예 : MFA)가 완료되면 RespondToAuthChallenge가 토큰을 반환합니다.

이 기술 문서는 여기에 있습니다 : 나는 본 적이하지만 난 내 상황에 적용하면 확실하지 않았다 http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html

+0

. 그래서, 당신이 말하는 것이 도움이됩니다.그러나 "srpA"에 무엇이 들어가는 지 명확하지 않으며 도전에 응답 할 때 나는 그 도전과 함께 시작된 도전 과제를 다시 에코노 칠해야하며 왜이 모든 것이 단락이나 두 가지 대신 예제 코드에 문서. 나에게 이것은 정체성의 중심이며 가장 명확한 유스 케이스 여야합니다. – Hans

+0

@Hans 가입 예제는 매우 유용했습니다. 문서가 매우 혼란 스럽다는 데 동의하기 때문에 시작에 도움이되었습니다. 당신이 로그인을 가지고 있다면 그것은 관련 비트를 업데이트하기 위해 답을 수정하십시오 (같은 것을 찾으려고하는이 질문에 착륙 한 사람들을 위해). 그런데이 링크가 도움이 될 것 같습니다 : https://sanderknape.com/2017/02/getting-started-with-aws-cognito/ – supersan

관련 문제