2015-03-29 11 views
5

Sto cercando di integrare Amazon Web Services nella mia app, ma francamente è stata una grande sfida ed è estremamente fastidioso.Amazon Cognito iOS

Sto usando Amazon SDK (V2.1.0) per iOS e questo è quello che sto cercando di realizzare:

  1. Nella mia app, ho una schermata di registrazione dove i miei utenti possono iscriversi per la mia app utilizzando Facebook o creando un account
  2. Se l'utente desidera creare un account, ho intenzione di utilizzare Amazon Cognito per accedere in modo sicuro ad Amazon DynamoDB (tramite l'app iOS) dove conserverò l'e-mail e la password.

io sto cercando di ottenere Amazon Cognito lavorare con il seguente codice nel mio ViewController ma ottengo zero per la variabile cognitoId. Il mio codice è qui sotto:

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 

Sulla base di tutto ciò che ho spiegato sopra, ho le seguenti domande:

  1. è il mio caso l'utilizzo di Amazon Cognito corretta in questo scenario?
  2. Perché il codice sopra non funziona?
  3. Penso che il problema potrebbe riguardare i ruoli iam configurati nell'Identity Pool. Non sono sicuro dei ruoli da dare in termini di sicurezza. Una volta che gli utenti si registrano, l'app avrà bisogno dell'autorizzazione per scrivere sul mio DynamoDB senza esporre alcun difetto di sicurezza. Qualcuno può offrire qualche idea su questo?

Apprezzo chiunque possa aiutare. Sto perdendo la testa per aver cercato di farlo funzionare negli ultimi due giorni.

Grazie!

+0

Mi piacerebbe parlarti della tua esperienza con Cognito. Inviami una email - la mia email è nella mia pagina del profilo StackOverflow. –

risposta

1

L'ID identità Cognito non è impostato per impostazione predefinita. Stai facendo una chiamata a getIdentityId o aggiorni con il provider? Altrimenti, proverei quello e vedrò se ottieni un risultato.

Come per le altre domande, Cognito supporta "provider pubblici" come Facebook, Google e Amazon, oltre a identità autenticate dallo sviluppatore. Per il tuo caso suggerito con Facebook, potresti facilmente utilizzare Cognito lì. È disponibile un post sul blog sui ruoli e sulle politiche di Cognito here.

Le identità autenticate dallo sviluppatore potrebbero essere un modo valido (e più sicuro) per implementare il secondo caso d'uso. Il flusso di lavoro richiede che tu abbia un server back-end, ma puoi solo dare accesso alla tabella dinamo din di tale server. Gli utenti farebbero il login, l'app invierà quei dati al tuo server, quel server verrebbe convalidato e risponderà con le credenziali, e quindi l'utente potrebbe accedere alle tue altre risorse AWS. Un post di blog che descrive i ruoli e le politiche in questo contesto è disponibile here e uno che fornisce maggiori dettagli sulle specifiche e che elenca un esempio end-to-end è disponibile here.

Problemi correlati