2016-08-27 15 views
1

TL; DRアマゾンCognitoログイン

がなぜ存在しないAWS Cognito/AWS Cognitoアイデンティティ・プロバイダにSignUpまたはChangePasswordがあるのと同じ方法でauthenticate(またはlogin)?

-

私はAPIの流れにAWS Cognitoを実装する方法を理解するのに苦労しています。私はこれを広範に研究し、機能が非常に明白であると感じ、私は何かを誤解していなければならないと感じる。

このAPIは、Android、iOS、SPAに対応します。私はこのようなエンドポイントなもので、私のAPIを介して行くことを基本的な流れを想像:それは、ユーザー/ PWDを受け入れるだろう

/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はのlocalStorage /メモリANに保存しますクライアントに返されます他のすべてのAPI呼び出しで、Authorization: Bearer <token>を使用して期限切れになるまでそれを返します。私は、トークンは、私のAPIを残すことなく、各呼び出しで期限切れをテストできるJWTだと思うし、不変のuserIdも含み、APIベースの秘密または署名テストを使って解読することで信頼できる。

しかし、このようなものはJavascriptを使用して、この最近のブログ記事以外の存在であることをほとんど、あるいはまったく兆候がある、それは「の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.いいえ。

ところで、これは本当の意味で、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

関連する問題