Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Einrichtung eines OIDC Anbieters als Identitätspool-IdP
OpenID Connect
Hinzufügen eines OpenID-Connect-Anbieters
Informationen zum Erstellen eines OpenID Connect-Anbieters finden Sie unter Creating OpenID Connect (OIDC) Identity Providers im AWS Identity and Access Management Benutzerhandbuch.
Zuordnen eines Anbieters mit Amazon Cognito
So fügen Sie einen OIDC Identitätsanbieter (IdP) hinzu
-
Wählen Sie Identitätspools in der Amazon-Cognito-Konsole
aus. Wählen Sie einen Identitätspool. -
Wählen Sie die Registerkarte Datenzugriff aus.
-
Wählen Sie Identitätsanbieter hinzufügen aus.
-
Wählen Sie OpenID Connect (OIDC).
-
Wählen Sie einen OIDCIdentitätsanbieter aus IAM IdPs Ihrem AWS-Konto. Wenn Sie einen neuen SAML Anbieter hinzufügen möchten, wählen Sie Neuen Anbieter erstellen aus, um zur IAM Konsole zu navigieren.
-
Um die Rolle festzulegen, die Amazon Cognito bei der Ausgabe von Anmeldeinformationen an Benutzer anfordert, die sich bei diesem Anbieter authentifiziert haben, konfigurieren Sie die Rolleneinstellungen.
-
Sie können Benutzern dieses IdPs die Standardrolle zuweisen, die Sie bei der Konfiguration Ihrer authentifizierten Rolle eingerichtet haben, oder die Rolle mit Regeln wählen.
-
Wenn Sie Rolle mit Regeln wählen ausgewählt haben, geben Sie die Quell-Anforderung aus der Benutzerauthentifizierung, den Operator, mit dem Sie die Anforderung vergleichen möchten, den Wert, der zu einer Übereinstimmung mit dieser Rollenauswahl führt, und die Rolle ein, die Sie zuweisen möchten, wenn die Rollenzuweisung übereinstimmt. Wählen Sie Weitere hinzufügen aus, um eine zusätzliche Regel zu erstellen, die auf einer anderen Bedingung basiert.
-
Wählen Sie eine Rollenauflösung. Wenn die Anforderungen Ihres Benutzers nicht Ihren Regeln entsprechen, können Sie Anmeldeinformationen verweigern oder Anmeldeinformationen für Ihre Authentifizierte Rolle ausgeben.
-
-
-
Um die Prinzipal-Tags zu ändern, die Amazon Cognito Benutzern zuweist, wenn es Anmeldeinformationen an Benutzer ausgibt, die sich bei diesem Anbieter authentifiziert haben, konfigurieren Sie die Attribute für die Zugriffskontrolle.
-
Um keine Prinzipal-Tags anzuwenden, wählen Sie Inaktiv aus.
-
Wählen Sie Standardzuordnungen verwenden, um Prinzipal-Tags auf der Grundlage von
sub
- undaud
-Anforderungen anzuwenden. -
Um Ihr eigenes benutzerdefiniertes Schema von Attributen für Prinzipal-Tags zu erstellen, wählen Sie Benutzerdefinierte Zuordnungen verwenden. Geben Sie dann einen Tag-Schlüssel ein, den Sie aus jeder Anforderung beziehen möchten, die Sie in einem Tag repräsentieren möchten.
-
-
Wählen Sie Änderungen speichern aus.
Sie können mehrere OpenID Connect-Anbieter einem einzigen Identitätspool zuordnen.
Verwenden von OpenID Connect
Weitere Informationen darüber, wie Sie sich anmelden und ein ID-Token erhalten, finden Sie in der Dokumentation des Anbieters.
Nachdem Sie ein Token erhalten haben, fügen Sie es der Anmeldezuordnung hinzu. Verwenden Sie URI den Namen Ihres Anbieters als Schlüssel.
Überprüfen eines OpenID-Connect-Tokens
Bei der ersten Integration in Amazon Cognito erhalten Sie möglicherweise eine InvalidToken
-Ausnahme. Es ist wichtig zu verstehen, wie Amazon Cognito OpenID Connect () OIDC -Token validiert.
Anmerkung
Wie hier (https://tools.ietf.org/html/rfc7523
-
Der Parameter
iss
muss dem Schlüssel in der Anmeldezuordnung (z. B. login.provider.com) entsprechen. -
Die Signatur muss gültig sein. Die Signatur muss über einen öffentlichen Schlüssel überprüfbar sein. RSA
-
Der Fingerabdruck des öffentlichen Schlüssels des Zertifikats entspricht dem Fingerabdruck, den Sie IAM bei der Erstellung Ihres OIDC Anbieters eingegeben haben.
-
Wenn der
azp
Parameter vorhanden ist, überprüfen Sie diesen Wert anhand des aufgelisteten Clients IDs in Ihrem OIDC Anbieter. -
Wenn der
azp
Parameter nicht vorhanden ist, vergleichen Sie denaud
Parameter mit dem aufgelisteten Client IDs in Ihrem OIDC Anbieter.
Die Website 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
Implementieren Sie das AWSIdentityProviderManager
Protokoll, um Amazon Cognito das OIDC ID-Token zur Verfügung zu stellen.
Wenn Sie die logins
Methode implementieren, geben Sie ein Wörterbuch zurück, das den von Ihnen konfigurierten OIDC Anbieternamen enthält. Dieses Wörterbuch fungiert als Schlüssel und das aktuelle ID-Token des authentifizierten Benutzers als Wert, wie im folgenden Codebeispiel gezeigt.
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") } }
Wenn Sie die instanziierenAWSCognitoCredentialsProvider
, übergeben Sie die Klasse, die implementiert AWSIdentityProviderManager als Wert von identityProviderManager im Konstruktor. Weitere Informationen finden Sie auf der AWSCognitoCredentialsProvider
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);