Einrichtung eines OIDC Anbieters als Identitätspool-IdP - Amazon Cognito

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 ist ein offener Standard für die Authentifizierung, der von einer Reihe von Anmeldungsanbietern unterstützt wird. Mit Amazon Cognito können Sie Identitäten mit OpenID Connect-Anbietern verknüpfen, über die Sie die Konfiguration vornehmen. AWS Identity and Access Management

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
  1. Wählen Sie Identitätspools in der Amazon-Cognito-Konsole aus. Wählen Sie einen Identitätspool.

  2. Wählen Sie die Registerkarte Datenzugriff aus.

  3. Wählen Sie Identitätsanbieter hinzufügen aus.

  4. Wählen Sie OpenID Connect (OIDC).

  5. 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.

  6. 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.

    1. 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.

      1. 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.

      2. 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.

  7. 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.

    1. Um keine Prinzipal-Tags anzuwenden, wählen Sie Inaktiv aus.

    2. Wählen Sie Standardzuordnungen verwenden, um Prinzipal-Tags auf der Grundlage von sub- und aud-Anforderungen anzuwenden.

    3. 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.

  8. 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) angegeben, bietet Amazon Cognito eine Übergangszeit von 5 Minuten, um jegliche Zeitversetzung zwischen den Systemen zu bewältigen.

  1. Der Parameter iss muss dem Schlüssel in der Anmeldezuordnung (z. B. login.provider.com) entsprechen.

  2. Die Signatur muss gültig sein. Die Signatur muss über einen öffentlichen Schlüssel überprüfbar sein. RSA

  3. Der Fingerabdruck des öffentlichen Schlüssels des Zertifikats entspricht dem Fingerabdruck, den Sie IAM bei der Erstellung Ihres OIDC Anbieters eingegeben haben.

  4. Wenn der azp Parameter vorhanden ist, überprüfen Sie diesen Wert anhand des aufgelisteten Clients IDs in Ihrem OIDC Anbieter.

  5. Wenn der azp Parameter nicht vorhanden ist, vergleichen Sie den aud Parameter mit dem aufgelisteten Client IDs in Ihrem OIDC Anbieter.

Die Website jwt.io ist eine wertvolle Ressource zum Decodieren von Token und Überprüfen dieser Werte.

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 AWSCognitoCredentialsProviderReferenzseite und wählen Sie initWithRegionTyp: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);