2015-03-29 17 views
5

Ich versuche, Amazon Web Services in meine App zu integrieren, aber ehrlich gesagt war es eine große Herausforderung und es ist extrem ärgerlich.Amazon Cognito iOS

Ich bin mit Amazon SDK (V2.1.0) für iOS und das ist, was ich zu erreichen versuchen:

  1. In meiner app, ich habe eine Registrierung Bildschirm, wo meine Nutzer für meine App anmelden können Verwenden Sie entweder Facebook oder indem Sie ein Konto erstellen
  2. Wenn der Benutzer ein Konto erstellen möchte, plane ich Amazon Cognito für den sicheren Zugriff auf Amazon DynamoDB (über die iOS App), wo ich die E-Mail und das Passwort speichern.

Ich versuche Amazon Cognito arbeitet mit dem folgenden Code in meinem Viewcontroller, aber ich bekomme gleich Null für die Variable cognitoId zu erhalten. Mein Code ist unten:

AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 
                           identityPoolId:@"us-east-1:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX"]; 
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 
                    credentialsProvider:credentialsProvider]; 
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration; 

NSString *cognitoId = credentialsProvider.identityId; //NULL 

Basierend auf alles, was ich oben erklärt wurde, habe ich die folgenden Fragen:

  1. Ist mein Anwendungsfall von Amazon Cognito korrekt in diesem Szenario?
  2. Warum funktioniert der obige Code nicht?
  3. Ich denke, das Problem kann mit iam Rollen im Identity Pool konfiguriert sein. Ich bin mir nicht sicher, welche Rollen in Bezug auf die Sicherheit zu geben sind. Sobald sich die Nutzer anmelden, benötigt die App die Berechtigung, in meine DynamoDB zu schreiben, ohne Sicherheitslücken aufzudecken. Kann mir jemand dazu einen Einblick geben?

Ich schätze jeden, der helfen kann. Ich verliere den Kopf über den Versuch, dies in den letzten Tagen zur Arbeit zu bringen.

Danke!

+0

Ich würde gerne mit Ihnen über Ihre Erfahrungen mit Cognito sprechen. Bitte mailen Sie mir - meine E-Mail befindet sich auf meiner Stackoverflow-Profilseite. –

Antwort

1

Die Cognito-ID ist nicht standardmäßig festgelegt. Machst du einen Anruf bei getIdentityId oder aktualisierst du mit dem Provider? Wenn nicht, würde ich das versuchen und sehen, ob Sie ein Ergebnis bekommen.

Bei Ihren anderen Fragen unterstützt Cognito öffentliche Anbieter wie Facebook, Google und Amazon sowie Entwickler authentifizierte Identitäten. Für Ihren vorgeschlagenen Fall mit Facebook könnten Sie Cognito ziemlich einfach dort verwenden. Ein Blogbeitrag zu Cognito-Rollen und -Richtlinien ist verfügbar here.

Entwickler authentifizierte Identitäten könnten eine gültige (und sicherere) Möglichkeit zur Implementierung Ihres zweiten Anwendungsfalls sein. Der Arbeitsablauf würde erfordern, dass Sie einen Back-End-Server haben, aber Sie können nur Zugriff auf die dynamo-db-Tabelle für diesen Server gewähren. Benutzer melden sich an, die App sendet diese Daten an Ihren Server, dieser Server validiert und antwortet mit den Anmeldeinformationen und der Benutzer kann dann auf Ihre anderen AWS-Ressourcen zugreifen. Ein Blogbeitrag, der die Rollen und Richtlinien in diesem Kontext beschreibt, ist verfügbar here und einer, der mehr Details zu den Besonderheiten gibt und ein Ende-zu-Ende-Beispiel enthält, ist verfügbar here.

Verwandte Themen