2016-08-27 4 views
1

TL; DRAmazon Cognito Anmeldung

Warum nicht da ist authenticate (oder login) auf die gleiche Art und Weise dort SignUp oder ChangePassword in AWS Cognito/AWS Cognito Identity Provider ist?

-

ich kämpfen, um zu verstehen, wie AWS Cognito in eine API Fluss zu implementieren. Ich habe das ausgiebig recherchiert und fühle mich wie die Funktionalität so offensichtlich ist, dass ich etwas falsch verstehen muss.

Diese API wird Android, iOS und einem SPA dienen. stelle ich mir die Grundströmung gehen durch meine api, mit einem Endpunkt etwas wie folgt aus:

/v1.0/authenticate/ 

Es würde ein Benutzer/PWD akzeptieren, dann ist die PHP auf dem Server würde so etwas tun:

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]); 

Und $result wäre ein jSON-String so etwas wie

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

und die token würde an den Client zurückgegeben, der sie in localstorage/Speicher eines speichern würde d Geben Sie es bei jedem anderen API-Aufruf zurück, bis es abgelaufen ist, indem Sie Authorization: Bearer <token> verwenden. Ich denke, das Token wäre eine JWT, die ich bei jedem Aufruf auf Ablauf prüfen könnte, ohne meine API verlassen zu müssen, würde auch eine unveränderliche userId beinhalten und der könnte durch Entschlüsseln unter Verwendung eines API-basierten geheimen oder Signaturtests vertraut werden.

Aber es gibt wenig oder gar keine Anzeichen dafür, dass es so etwas wie dies in Existenz außer dieser letzten Blog-Post ist, mit Javascript, die eine JS-Methode ‚authenticateUser‘ genannt gibt es:

https://mobile.awsblog.com/post/Tx2O14ZY8A5LFHT/Accessing-Your-User-Pools-using-the-Amazon-Cognito-Identity-SDK-for-JavaScript (Ich fand diesen Link in dieser SO Frage: What is the REST (or CLI) API for logging in to Amazon Cognito user pools, die mir ähnlich ist, werde ich zulassen, aber kein Duplikat).

Aber ich ging zu ihrem Github Repo und did a search for 'authenticateUser' und fand keine solche Methode. Ich auch did the same search in the PHP repo. Nein.

BTW, dies (unten) ist eine echte, funktionierende Signup so scheint es (für mich), dass es folgen würde, dass eine solche einfache Authentifizierung würde auch funktionieren. Was vermisse ich??

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. 

Hinweis: Ich habe auch Auth0 aus, die groß schien aber nicht haben und SDK-Login, entweder (Sie auf ihre Server zu übermitteln haben und verwenden Sie eine Form, die sie zur Verfügung stellen ...); Stormpath war außerhalb der Preisklasse.

Danke für Ihre Hilfe!

Antwort

3

Es gibt keine einfache "authenticate" API. Der Authentifizierungsablauf beginnt mit einem Aufruf von "InitiateAuth" und einer Reihe von RespondToAuthChallenge. Wenn alle Herausforderungen (Beispiel: MFA) abgeschlossen sind, werden die Token von RespondToAuthChallenge zurückgegeben.

Die Dokumentation dieser beschreibt, ist hier: http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html

+0

ich das gesehen habe, aber ich war nicht sicher, ob es für meine Situation angewendet. Also, es ist hilfreich, dass Sie es sagen.Mir ist jedoch nicht klar, was in "srpA" passiert und wenn ich auf die Herausforderung antworte, gebe ich nur die Herausforderung zurück, mit der sie entstanden sind, und warum all dies nicht in Beispielcode statt in einem oder zwei Paragraphen geschrieben ist die Dokumentation. Für mich ist dies das Zentrum der Identität und sollte der klarste Anwendungsfall sein. – Hans

+0

@Hans Ihr Anmeldebeispiel war sehr nützlich. Es hat mir geholfen, loszulegen, weil ich zustimme, dass die Dokumentation sehr verwirrend ist. Wenn Sie das Login funktioniert haben, bearbeiten Sie bitte Ihre Antwort, um die relevanten Bits zu aktualisieren (für Leute, die auf dieser Frage landen und versuchen, dasselbe zu finden). Übrigens scheint dieser Link ziemlich hilfreich zu sein: https://sanderknape.com/2017/02/getting-started-with-aws-cognito/ – supersan

Verwandte Themen