SAML Single Sign-On (SSO) in AWS Cognito mit dem Joomla IDP-Plugin
Übersicht
Single Sign-On in AWS Cognito mit Joomla IDP ermöglicht Benutzern die Anmeldung bei AWS Cognito mit Joomla, indem sie AWS Cognito als Service Provider (SP) und Joomla als SAML Identity Provider (IDP) konfigurieren. Diese Anleitung führt Sie Schritt für Schritt durch die Konfiguration von SSO zwischen den beiden Plattformen.
Was ist AWS Cognito?
AWS Cognito ist ein von Amazon Web Services (AWS) bereitgestellter Service, der Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und Mobilanwendungen bietet. Er vereinfacht das Hinzufügen von Benutzerregistrierung, Anmeldung und Zugriffskontrolle zu Ihren Apps.
Joomla SAML IDP Plugin installieren
- Melden Sie sich bei Ihrer Joomla-Site an Administrator Konsole.
- Klicken Sie im linken Umschaltmenü auf System, dann klicken Sie im Abschnitt „Installieren“ auf Erweiterungsoptionen.
- Klicken Sie nun auf Oder Suchen Sie nach einer Datei Klicken Sie auf die Schaltfläche, um die zuvor heruntergeladene Plugin-Datei zu finden und zu installieren.
- Die Installation des Plugins ist erfolgreich. Klicken Sie nun auf Beginnen Sie mit der Nutzung des miniOrange SAML IDP-Plugin um das MiniOrange Joomla IDP-Plugin zu konfigurieren.
- Gehen Sie zum miniOrange Joomla IDP-Plugin, navigiere zum Identitätsanbieter Tab.
- Hier finden Sie die XML-URL/Datei mit den Metadaten des Identitätsanbieters oder Endpunkte wie IDP-Entitäts-ID, SAML-Anmelde-URL, SAML-Abmelde-URL (Premium-Funktion) und Zertifikat für die SP-Konfiguration. Laden Sie die XML-Metadaten herunter, indem Sie auf die unten gezeigte Schaltfläche klicken.
Konfigurationsschritte
In dieser Konfiguration Joomla dient als Repository zum Speichern von Benutzern, d. h. es fungiert als IDP, während AWS Cognito ist der Ort, an dem sich Benutzer mit ihren Anmeldeinformationen von Joomla anmelden. Joomla SAML IDP SSO-Plugin wird installiert.
Schritt 1: AWS Cognito als SP (Service Provider) konfigurieren
- Gehen Sie zunächst zu AWS Cognito-Konsole und melden Sie sich bei Ihrem Konto an, um AWS Cognito zu konfigurieren.
- Gehe zu Dienstleistungen > Sicherheit, Identität und Compliance > Cognito.
- Klicke Benutzerpools verwalten und dann Erstellen Sie einen Benutzerpool.
- Geben Sie einen Namen für den Poolnamen ein. Klicken Überprüfen Sie die Standardeinstellungen und dann Pool erstellen.
- Behalten Sie nach dem Erstellen eines Pools die bei Pool-ID griffbereit, oder Sie können es notieren, damit es Ihnen bei der Konfiguration Ihres IdP hilft.
- Klicken Sie im linken Bereich unter „App-Integration“ auf „Domänenname“. Geben Sie ein verfügbares Domänenpräfix ein und speichern Sie es. Behalten Sie diese Domäne bei, da sie in der ACS-URL zum Konfigurieren Ihres IDP erforderlich ist.
- Klicken Sie im linken Bereich auf Identitätsanbieter unter Föderation. Dann SAML auswählen.
- Laden Sie die Joomla IDP-Metadaten hoch, benennen Sie sie und klicken Sie dann auf Anbieter erstellen.
- Füge das hinzu
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
Attribut im Textfeld „SAML-Attribut“ und wählen Sie „E-Mail“ als Benutzerpool-Attribut aus.
- Klicke Änderungen speichern.
Schritt 2: Joomla als Identitätsanbieter konfigurieren
- Gehen Sie im miniOrange Joomla SAML IDP Plugin zur Registerkarte „Dienstanbieter“.
- Geben Sie im Feld „SP Entity ID“ urn:amazon:cognito:sp:(YourUserPoolId) ein, entfernen Sie den Anker-Tag (<>) und fügen Sie Ihre Benutzerpool-ID hinzu, die Sie bereits oben beim Erstellen des Pools kopiert haben.
- Ersetzen Sie „yourUserPoolId“ durch Ihre Amazon Cognito-Benutzerpool-ID.
- So finden Sie die Benutzerpool-ID:
- Melden Sie sich als Administrator bei der AWS Management Console an.
- Gehen Sie zu „Dienste“ > „Sicherheit, Identität und Compliance“ und wählen Sie dann Cognito aus.
- Wählen Sie „Benutzerpools verwalten“ und dann den Benutzerpool, den Sie in der Konfiguration verwenden möchten.
- Suchen Sie oben in der Liste nach der Pool-ID.
- Geben Sie im Feld ACS-URL Folgendes ein:
https://YourSubdomain.amazoncognito.com/saml2/idpresponse
und speichern Sie es. - Bitte ersetzen Sie Ihre Subdomain durch die, die Sie im obigen Schritt erstellt haben.
- Sie können Ihre Subdomain auch finden, indem Sie die folgenden Schritte ausführen:
- So finden Sie Ihre Subdomain:
- Klicken Sie unter App-Integration auf Domänenname.
- Kopieren Sie die gesamte URL und ersetzen Sie sie in der ACS-URL durch „IhreSubdomain“ (entfernen Sie hier bitte alle Leerzeichen).
- Aktivieren Sie das Kontrollkästchen Assertion Sign, um die Assertion zu signieren, und klicken Sie auf die Schaltfläche Speichern.
- Klicken Sie zum Zuordnen der Attribute auf die Registerkarte „Zuordnung“. Wählen Sie Ihren Dienstanbieter aus der Dropdown-Liste aus.
- Füge das hinzu
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
Wert im Textfeld „Attributname“ und „E-Mail-Adresse auswählen“ aus dem Dropdown-Menü „Attributwert“. Klicken Sie auf die Schaltfläche „Zuordnung speichern“.
Schritt 3: App-Client in AWS Cognito konfigurieren
- Klicken Sie nun unter Allgemeine Einstellungen auf die App-Clients. Klicken Sie auf App-Client hinzufügen.
- Geben Sie den Namen des App-Clients ein. Zum Beispiel JoomlaIdP. Deaktivieren Sie das Kontrollkästchen „Client-Geheimnis generieren“ und klicken Sie unten auf die Schaltfläche „App-Client erstellen“.
- Klicken Sie nun im linken Bereich unter „App-Integration“ auf die App-Client-Einstellungen.
- Aktivieren Sie das Kontrollkästchen „Alle auswählen“, geben Sie die Rückruf-URL(s) und die Abmelde-URL(s) ein. Wählen Sie unter „Zulässige OAuth-Flows“ die Option „Implizite Genehmigung“ aus. Aktivieren Sie nun unter „Zulässige OAuth-Bereiche“ das Kontrollkästchen „E-Mail“ und „OpenID“ und klicken Sie unten rechts auf die Schaltfläche „Änderungen speichern“.
- Klicken Sie nun unten auf „Gehostete Benutzeroberfläche starten“, um SSO durchzuführen.
- Sie können für die Durchführung des SSO auch die folgende SSO-URL verwenden.
https://(domain_prefix).auth.(region).amazoncognito.com/login?
response_type=token&client_id=(app client id)&redirect_uri=(your redirect URI)
