Fournisseurs OpenID Connect (groupes d'identités)
OpenID Connect
Ajout d'un fournisseur OpenID Connect
Pour plus d'informations sur la création d'un fournisseur OpenID Connect, consultez la documentation IAM.
Association d'un fournisseur à Amazon Cognito
Une fois que vous avez créé un fournisseur OpenID Connect dans la console IAM, vous pouvez l'associer à un groupe d'identités. Tous les fournisseurs que vous configurez sont visibles dans l'écran Edit Identity Pool (Modifier le groupe d'identités) de la console Amazon Cognito, sous l'en-tête OpenID Connect Providers (Fournisseurs OpenID Connect).

Vous pouvez associer plusieurs fournisseurs OpenID Connect à un seul groupe d'identités.
Utilisation d'OpenID Connect
Reportez-vous à la documentation de votre fournisseur pour découvrir comment vous connecter et recevoir un jeton d'identification.
Une fois que vous avez un jeton, ajoutez-le au mappage des connexions. Utilisez l'URI de votre fournisseur comme clé.
Validation d'un jeton OpenID Connect
Lors de l'intégration initiale avec Amazon Cognito, vous pouvez recevoir une exception InvalidToken
. Il est important de comprendre comment Amazon Cognito valide les jetons OpenID Connect (OIDC).
Comme indiqué ici (https://tools.ietf.org/html/rfc7523
-
Le paramètre
iss
doit correspondre à la clé utilisée dans le mappage des connexions (par exemple, login.provider.com). -
La signature doit être valide. Elle doit être vérifiable via une clé publique RSA.
-
L'empreinte de la clé publique du certificat correspond à l'empreinte que vous avez définie dans IAM quand vous avez créé le fournisseur OIDC.
-
Si le paramètre
azp
est présent, vérifiez cette valeur par rapport aux ID client répertoriés dans le fournisseur OIDC. -
Si le paramètre
azp
n'est pas présent, vérifiez le paramètreaud
par rapport aux ID client répertoriés dans le fournisseur OIDC.
Le site web jwt.io
Android
Map<String, String> logins = new HashMap<String, String>(); logins.put("login.provider.com", token); credentialsProvider.setLogins(logins);
iOS : Objective-C
credentialsProvider.logins = @{ "login.provider.com": token }
iOS : Swift
Pour fournir le jeton d'identification OIDC à Amazon Cognito, implémentez le protocole AWSIdentityProviderManager
.
Quand vous implémentez la méthode logins
, renvoyez un dictionnaire contenant le nom du fournisseur OIDC que vous avez configuré. Ce dictionnaire fait office de clé et le jeton d'identification actuel de l'utilisateur authentifié fait office de valeur, comme dans l'exemple de code suivant.
class OIDCProvider: NSObject, AWSIdentityProviderManager { func logins() -> AWSTask<NSDictionary> { let completion = AWSTaskCompletionSource<NSString>() getToken(tokenCompletion: completion) return completion.task.continueOnSuccessWith { (task) -> AWSTask<NSDictionary>? in //login.provider.name is the name of the OIDC provider as setup in the Amazon Cognito console return AWSTask(result:["login.provider.name":task.result!]) } as! AWSTask<NSDictionary> } func getToken(tokenCompletion: AWSTaskCompletionSource<NSString>) -> Void { //get a valid oidc token from your server, or if you have one that hasn't expired cached, return it //TODO code to get token from your server //... //if error getting token, set error appropriately tokenCompletion.set(error:NSError(domain: "OIDC Login", code: -1 , userInfo: ["Unable to get OIDC token" : "Details about your error"])) //else tokenCompletion.set(result:"result from server id token") } }
Lorsque vous instanciez AWSCognitoCredentialsProvider
, transmettez la classe qui implémente AWSIdentityProviderManager comme valeur de identityProviderManager dans le constructeur. Pour plus d'informations, accédez à la page de référence AWSCognitoCredentialsProvider et choisissez initWithRegionType:identityPoolId:identityProviderManager.
JavaScript
AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'login.provider.com': token } });
Unity
credentials.AddLogin("login.provider.com", token);
Xamarin
credentials.AddLogin("login.provider.com", token);