Single Sign-on (SSO)
Mit Single Sign-on (SSO) for Cloud Directory können Sie Ihren Benutzern eine reibungslose Authentifizierung zwischen mehreren Web-Apps bieten. Wenn SSO bei der Erstanmeldung eines Benutzers aktiviert wird, dann müssen bei der nächsten Anmeldung die Berechtigungsnachweise nicht erneut eingegeben werden. Stattdessen wird der Benutzer automatisch bei allen Ihren Apps angemeldet, die mit derselben App ID-Instanz geschützt werden.
App ID stellt SSO für Benutzer von Cloud Directory bereit. Wenn Sie einen sozialen oder föderierten SAML Identitätsanbieter verwenden, wird SSO von diesem Anbieter verwaltet und App ID respektiert ihn.
Funktionsweise
Im folgenden Diagramm ist die Funktionsweise von SSO dargestellt.
- Ein Cloud Directory-Benutzer meldet sich bei Ihrer App zum ersten Mal an.
- Der Benutzer wird aufgefordert, sich durch Angabe entweder eines Benutzernamens oder einer E-Mail-Adresse mit Kennwort zu authentifizieren.
- Wenn die Berechtigungsnachweise gültig sind, dann wird der Benutzer bei Ihrer App angemeldet. Gleichzeitig erstellt App ID eine Sitzung und legt im Browser des Benutzers ein Cookie fest.
- Wenn ein Benutzer versucht, sich bei einer Ihrer anderen Anwendungen anzumelden, erkennt App ID das Sitzungscookie und meldet den Benutzer automatisch bei Ihrer App an. App ID-Sitzungscookies sind instanzspezifisch und werden vom eindeutigen privaten Schlüssel der Instanz signiert.
Aktuell ist Cloud Directory-SSO so konfiguriert, dass es dann funktioniert, wenn Cloud Directory der einzige aktivierte Identitätsprovider ist. Wenn Ihre Instanz von App ID für die Verwendung mehrerer Identitätsprovider konfiguriert ist, hat das Aktivieren von SSO keinen Einfluss auf den Anmeldeablauf. Benutzer werden bei jeder Anmeldung zur Eingabe ihrer Cloud Directory-Berechtigungsnachweise oder zur Auswahl eines der anderen Provider aufgefordert.
SSO konfigurieren
Sie können Single Sign-on konfigurieren, indem Sie das App ID-Dashboard oder die APIs verwenden.
Mit der GUI
Sie können SSO über die GUI konfigurieren.
-
Navigieren Sie zur Registerkarte Cloud Directory > Single Sign-on des App ID-Dashboards.
-
Legen Sie für Single Sign-on aktivieren die Einstellung Aktiviert fest.
-
Legen Sie die Zeitdauer fest, für die ein Benutzer inaktiv sein kann, bevor die SSO-Sitzung abläuft. Läuft die Sitzung ab, dann muss sich der Benutzer erneut anmelden. Die Zeitdauer wird in Minuten angegeben und das zulässige Maximum für Inaktivität beträgt 10.080 Minuten (7 Tage). Die Standarddauer beträgt 1440 Minuten (1 Tag).
-
Fügen Sie die Weiterleitungs-URIs im Feld Weiterleitungs-URI für Abmeldung hinzu und klicken Sie dann auf das Pluszeichen (+). Beachten Sie hierbei unbedingt, dass nur Anwendungen registriert werden sollten, die Sie als vertrauenswürdig einstufen. Wenn Sie den URI registrieren, autorisieren Sie App ID, ihn in den Autorisierungsworkflow einzubinden.
-
Klicken Sie auf Speichern.
Mit der API
Sie können über die Administrator-API für die SSO-Konfiguration drei Einstellungen definieren, um das Feature zu aktivieren.
Beispielaufruf:
{
"isActive": true,
"inactivityTimeoutSeconds": 86400,
"logoutRedirectUris": [
"http://my-first-app.com/after_logout",
"http://my-second-app.com/after_logout"
]
}
| Einstellung | Definition |
|---|---|
isActive |
Um SSO zu aktivieren, müssen Sie diesen Wert auf true setzen. Die Standardeinstellung ist false. |
inactivityTimeoutSeconds |
Die längste Dauer ohne Benutzeraktivität, nach deren Ablauf der Benutzer seine Berechtigungsnachweise erneut eingeben muss. Dieser Wert wird in Sekunden angegeben und kann maximal 604800 seconds (7 Tage) betragen. Die Standardeinstellung
ist 86400 seconds (1 Tag). |
logoutRedirectUris |
Eine durch Kommas getrennte Liste zulässiger URIs, an die App ID Ihre Benutzer nach deren Abmeldung weiterleiten kann. |
Abmeldung konfigurieren
Mit App ID können Sie die SSO-Sitzung eines Benutzers im aktuellen Browser beenden. Wenn im Browser des Benutzers auf den API-Endpunkt zugegriffen wird, dann wird die Sitzung beendet und der Benutzer wird beim nächsten Anmeldeversuch in diesem Browser für jede Ihrer Apps zur Eingabe seiner Berechtigungsnachweise aufgefordert.
Wenn einer der Abläufe im Zusammenhang mit dem Ändern, Zurücksetzen oder Erneuern eines Kennworts gestartet wird, werden die Sitzungen aller Clients für den Benutzer automatisch beendet.
Mit der API
Um einen Benutzer abzumelden, muss der Browser mithilfe der verfügbaren Informationen weitergeleitet werden, um den folgenden API-Aufruf auszuführen.
https://<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>/cloud_directory/sso/logout?redirect_uri=<redirectURI>&client_id=<clientID>
| Variable | Wert |
|---|---|
region |
Die Region, in der Ihre Instanz von App ID bereitgestellt wird. Weitere Informationen zu den verfügbaren Regionen. |
tenantID |
Die eindeutige ID Ihrer App ID-Instanz. Sie finden diesen Wert auf der Registerkarte Service Credentials des App ID Dashboards. Wenn Sie nicht über eine Gruppe von Serviceberechtigungsnachweisen verfügen, können Sie eine solche Gruppe erstellen und den Wert aus dieser Gruppe verwenden. |
redirectURI |
Ein URI, den Sie in Ihrer SSO-Konfiguration über das App ID-Dashboard angegeben haben. Aus Sicherheitsgründen kann keine Weiterleitung durchgeführt werden, wenn Sie keinen Wert angeben. In diesem Fall wird ein Fehler angezeigt. |
clientID |
Die Client-ID Ihrer Anwendung. |
Auch wenn die SSO-Sitzung beendet wird, muss ein Benutzer mit einem gültigen Zugriffstoken, das in der Sitzung des Benutzers gespeichert ist, seine Berechtigungsnachweise möglicherweise erst dann erneut eingeben, wenn die Gültigkeit des Tokens abläuft. Standardmäßig läuft die Gültigkeit des Tokens nach einer Stunde ab.
Mit dem SDK des Node.JS-Servers
Sie können auch das SDK des App ID-Node.js-Servers verwenden, um die Weiterleitung automatisch durchzuführen.
-
Legen Sie
logoutSSOals Methode fest. Zum Beispiel:let webAppStrategy = new WebAppStrategy(.....); .... webAppStrategy.logoutSSO(); -
Konfigurieren Sie die Abmeldung.
app.get('/logoutSSO', (req, res) => { res.clearCookie("refreshToken"); webAppStrategy.logoutSSO(req,res, { "redirect_uri": "https://my-app.com/after_logout" }); });
Alle Sitzungen eines Benutzers beenden
Als Administrator können Sie alle SSO-Sitzungen eines beliebigen Benutzers über die App ID-Administrator-APIs beenden. Die APIs werden mithilfe eines Cloud IAM-Tokens geschützt.
Beispiel für API-Anforderung:
POST https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/Users/<userID>/sso/logout
Headers:
Authorization: Bearer <IAMToken>
Content-Type: application/json
| Variable | Wert |
|---|---|
Content-Type |
Der Inhaltstyp Ihrer Anfrage. Der akzeptierte Wert ist application/json. |
region |
Die Region, in der Ihre Instanz von App ID bereitgestellt wird. Weitere Informationen zu den verfügbaren Regionen. |
tenantID |
Die eindeutige ID Ihrer App ID-Instanz. Sie finden diesen Wert auf der Registerkarte Service Credentials des App ID Dashboards. Wenn Sie nicht über eine Gruppe von Serviceberechtigungsnachweisen verfügen, können Sie eine solche Gruppe erstellen und den Wert aus dieser Gruppe verwenden. |
userID |
Die eindeutige ID eines Cloud Directory-Benutzers. Sie können die ID mithilfe der Cloud Directory-Benutzer-APIs oder durch Anzeigen des Identitätstokens des Benutzers anfordern. |
Wenn Sie diese API aufrufen, werden alle SSO-Sitzungen des angegebenen Benutzers ungültig gemacht. Dies bedeutet, dass der Benutzer beim nächsten Anmeldeversuch bei einer Ihrer Apps über jede Einheit und jeden Browser zur erneuten Eingabe seiner Berechtigungsnachweise aufgefordert wird.