2016-10-12 2 views
0

Avec AWS iOS SDK 2.4.0, la documentation d'Amazon a pris du retard. Pages sur l'écriture de code pour prendre en charge les identités fédérées, en particulier la façon d'actualiser les identifiants de jeton ne reflète plus le code.AWS iOS SDK 2.4.0 et la documentation Cognito

Cette page par exemple, http://docs.aws.amazon.com/cognito/latest/developerguide/open-id.html, fait référence à credentialsProvider.logins qui n'est pas présent dans le SDK 2.4.0

Est-ce que quelqu'un sait si quelqu'un a documenté autre cet aspect de iOS SDK d'Amazon? Ou Amazon ailleurs?

Amazon a maintenant publié 2.4.10 et son accent, je dirais, est passé à son produit Pools d'utilisateurs, ce qui me fait craindre que le produit AWS Federated Identities ne soit bientôt obsolète.

Répondre

2

Les identités fédérées ne sont pas sur le point d'être abandonnées. Nous mettrons à jour les documents. En attendant, je peux fournir quelques instructions stopgap. Dans 2.4, le dictionnaire des connexions est passé à un modèle de traction. Le SDK vous demandera un dictionnaire de connexion mis à jour chaque fois que les informations d'identification AWS doivent être actualisées. Pour l'utiliser, fournissez une implémentation de AWSIdentityProviderManager à votre fournisseur d'informations d'identification. Voici un code partiel qui vous montre comment implémenter la méthode de connexion. Il montre comment le faire à la fois de manière synchrone si vous avez un jeton en cours et de manière asynchrone si vous devez appeler un service pour en obtenir un.

Synchrone obtenir le jeton

- (AWSTask<NSDictionary<NSString *, NSString *> *> *)logins { 
    return [AWSTask taskWithResult: @{ @"login.provider.com" : token}]; 
} 

obtenir le jeton de manière asynchrone

- (AWSTask<NSDictionary<NSString *, NSString *> *> *)logins { 
    AWSTaskCompletionSource<NSString*> *token = [AWSTaskCompletionSource new]; 
    [self getOpenIdToken:token]; 
    return [token.task continueWithSuccessBlock:^id _Nullable(AWSTask<NSString *> * _Nonnull task) { 
     return [AWSTask taskWithResult: @{ @"login.provider.com" : task.result }]; 
    }]; 
} 

- (void) getOpenIdToken: (AWSTaskCompletionSource <NSString*>*) token { 
    //call your server to get the token 
    //... 

    if(success){ 
     token.result = oidcTokenFromServer; 
    }else { 
     [token setError:[NSError errorWithDomain:@"oidc" 
              code:-1 
             userInfo:@{@"error":@"Unable to get open id connect token"}]]; 
    } 
} 
+0

Comment puis-je utiliser la méthode synchrone ci-dessus? Je reçois un type de pointeur incompatible. – cdub

+0

J'utilise aussi des identités fédérées qui semblent fonctionner avec mon code. Mais vous avez des problèmes avec l'utilisation des jetons: http://stackoverflow.com/questions/41393152/verifying-user-is-authenticated-using-aws-ios-sdk/41397696#41397696 Comment les actualisez-vous? J'utilise lambda pour les obtenir. – cdub