Von SP und IdP initiiertes SSO

In diesem Artikel werden die Konzepte von SP und IdP Initiated SSO zwischen zwei Federation-Deployments erläutert und die Unterschiede zwischen diesen beiden Flows erläutert.

In diesem Artikel wird auch das Konzept eines Benutzerstatus oder einer Rückgabe-URL erläutert, die während des Federation-SSO zwischen IdP und dem SP gemeinsam verwendet wird. Dieses Konzept wird aufgerufen:

In diesem Artikel werden Beispiele mit dem SAML 2.0-Protokoll dargestellt, obwohl dasselbe für die anderen Protokolle gilt.

Federation-SSO-Abläufe

Topologie

Ein typisches Federation-Deployment besteht aus den folgenden Entitys:

Vom Serviceanbieter initiiertes SSO

Ein vom SP initiierter SSO-Ablauf ist ein Federation-SSO-Vorgang, der von der SP-Sicherheitsdomain gestartet wurde, indem der SP-Föderationsserver eine Federation-Authentifizierungsanforderung erstellt und den Benutzer mit der Nachricht und einer kurzen Zeichenfolge, die den Vorgangsstatus darstellt, an IdP umleitet:

Hinweis zum Betriebsstatus: Im Allgemeinen sollte der in der Nachricht gemeinsam verwendete Status nicht zu lang sein, da er die Umleitungsflüsse unterbrechen könnte, wobei die Länge der Umleitungs-URL die maximale Länge überschreitet, die Browser für URLs verarbeiten können. Daher ist es beim von SP initiierten SSO immer vorzuziehen, den SP zu haben

Es gibt zwei Möglichkeiten, einen vom SP initiierten SSO-Ablauf auszulösen:

Auf Ressourcen zugreifen

Dies ist der häufigste Ablauf für Federation-SSO-Vorgänge, bei denen der Benutzer versucht, auf eine geschützte Ressource zuzugreifen, und das SSO-System zur Laufzeit bestimmt, dass der Benutzer über Federation-SSO authentifiziert werden muss.

Für diesen Ablauf können folgende Anwendungsfälle verwendet werden:

Der Ablauf umfasst die folgenden Schritte:

  1. Benutzerbrowser fordert Zugriff auf eine geschützte Ressource an

  2. Der SSO-Web-Agent fängt den Aufruf ab, bestimmt, dass der Benutzer authentifiziert werden muss, und gibt eine Umleitung zurück an den Browser des Benutzers aus

  3. Der Browser des Benutzers greift auf den SSO-Server zu, der vom SSO-Web-Agent umgeleitet wird

  4. Der SSO-Server bestimmt, dass der Benutzer über das Federation-SSO authentifiziert werden soll, wählt eine IdP aus, erstellt eine SAML 2.0 AuthnRequest-Nachricht, speichert den Betriebsstatus im SSO-Serverspeicher und leitet den Browser des Benutzers an IdP um, wobei die SAML-Nachricht und eine Zeichenfolge den Betriebsstatus beim SP referenziert

  5. Der Browser des Benutzers greift mit der Nachricht AuthnRequest auf den SAML 2.0-Service IdP zu.

Beschreibung der Abbildung Accessing_Resources_Screen.jpg

Nachdem die IdP die SAML 2.0 AuthnRequest-Nachricht empfangen hat, bestimmt der Server, ob der Benutzer erneut herausgefordert werden muss (noch nicht authentifiziert, Session wegen Timeout abgebrochen...). Nach der möglichen Identifizierung des Benutzers wird der Federation-SSO-Ablauf fortgesetzt.

  1. Die IdP erstellt eine SSO-Antwort mit einer SAML 2.0-Assertion, die Benutzerinformationen sowie Authentifizierungsdaten enthält, und leitet den Browser des Benutzers mit der Nachricht und dem Parameter RelayState an den SP um

  2. Der Browser des Benutzers zeigt die SSO-Antwort an den SP-Server an

  3. Der SP validiert die SAML 2.0-Assertion und erstellt eine SSO-Session für den Benutzer. Der SSO-Server leitet dann den Browser des Benutzers zurück zur ursprünglich angeforderten Ressource

  4. Der Browser des Benutzers fordert Zugriff auf die Ressource an. Dieses Mal erteilt der SSO-Web-Agent Zugriff auf die Ressource

  5. Die Webanwendung gibt eine Antwort an den Browser des Benutzers zurück

Beschreibung der Abbildung Accessing_Resources_Response_Screen.jpg

Wie bereits erwähnt, wird dieser Ablauf am häufigsten verwendet, da das Federation-SSO nur zur Laufzeit vom SSO-Server ausgelöst wird, ohne dass andere Komponenten in der SP-Sicherheitsdomain Federation kennen müssen.

Federation-SP-Service aufrufen

Dieser Ablauf wird nicht häufig verwendet, da er impliziert, dass das Federation-SSO beim SP gestartet wird, indem auf einen Service auf dem SP-Server zugegriffen wird, und indem eine vorhandene gültige Session nicht berücksichtigt wird, die der Benutzer bereits haben könnte. Daher sollte dies vermieden werden, da dies Auswirkungen auf die Performance hat auf:

Für diesen Ablauf können folgende Anwendungsfälle verwendet werden:

Die Anwendungsfälle, in denen dieser Ablauf verwendet wird, umfassen die folgenden Schritte:

  1. Der Browser des Benutzers greift auf den SP zu, um einen Federation-SSO-Ablauf zu starten, indem optional angegeben wird

    1. Die URL, an die der Browser des Benutzers nach Abschluss des Federation-SSO umgeleitet werden soll

    2. Die zu verwendende IdP

  2. Der SSO-Server wählt eine IdP aus (sofern nicht angegeben) und wählt die Standard-Rückgabe-URL aus (sofern nicht angegeben), erstellt eine SAML 2.0 AuthnRequest-Nachricht, speichert den Betriebsstatus im SSO-Serverspeicher und leitet den Browser des Benutzers an IdP um, wobei die SAML-Nachricht und eine Zeichenfolge den Betriebsstatus im SP referenziert

  3. Der Browser des Benutzers greift mit der Nachricht AuthnRequest auf den SAML 2.0-Service IdP zu.

Beschreibung der Abbildung IdP_Service_with_AuthnRequest_Screen.jpg

Nachdem die IdP die SAML 2.0 AuthnRequest-Nachricht empfangen hat, bestimmt der Server, ob der Benutzer erneut herausgefordert werden muss (noch nicht authentifiziert, Session wegen Timeout abgebrochen...). Nach der möglichen Identifizierung des Benutzers wird der Federation-SSO-Ablauf fortgesetzt:

  1. Die IdP erstellt eine SSO-Antwort mit einer SAML 2.0-Assertion, die Benutzerinformationen sowie Authentifizierungsdaten enthält, und leitet den Browser des Benutzers mit der Nachricht und dem Parameter RelayState an den SP um

  2. Der Browser des Benutzers zeigt die SSO-Antwort an den SP-Server an

  3. Der SP validiert die SAML 2.0-Assertion und erstellt eine SSO-Session für den Benutzer. Der SSO-Server leitet dann den Browser des Benutzers zurück zur ursprünglich angeforderten Ressource

  4. Der Browser des Benutzers fordert Zugriff auf die Ressource an. Dieses Mal erteilt der SSO-Web-Agent Zugriff auf die Ressource

  5. Die Webanwendung gibt eine Antwort an den Browser des Benutzers zurück

Beschreibung der Abbildung IdP_Service_with_Response_Screen.jpg

Dieser Ablauf sollte selten verwendet werden, da das Federation-SSO statisch ausgelöst wird, selbst wenn der Benutzer bereits über eine gültige SSO-Session verfügt. Außerdem bedeutet dies, dass einige Komponenten in der SP-Sicherheitsdomain über den SP-Service informiert sind.

IdP Durch SSO initiiertes

Ein von IdP initiierter SSO-Ablauf ist ein Federation-SSO-Vorgang, der von der IdP-Sicherheitsdomain gestartet wurde, indem der IdP-Föderationsserver eine Federation-SSO-Antwort erstellt und den Benutzer mit der Antwortnachricht und einem optionalen Betriebsstatus an den SP umleitet:

Wie im vorherigen Abschnitt erwähnt, sollte der in der Nachricht gemeinsam verwendete Status nicht zu lang sein, da er die Umleitungsflüsse möglicherweise unterbrechen würde, wobei die Länge der Umleitungs-URL die maximale Länge überschreitet, die Browser für URLs verarbeiten können.

Dieser Ablauf wird häufig verwendet, wenn IdP-Benutzer auf Ressourcen zugreifen müssen, die von einem SP gehostet werden. Er ist jedoch nicht die beste Herangehensweise für das Federation-SSO, da er eine vorhandene gültige Session am SP ignoriert, die der Benutzer bereits haben könnte. Daher sollte dies vermieden werden, da dies Auswirkungen auf die Performance hat auf:

Für diesen Ablauf können folgende Anwendungsfälle verwendet werden:

Die Anwendungsfälle, in denen dieser Ablauf verwendet wird, umfassen die folgenden Schritte:

  1. Der Browser des Benutzers greift auf IdP zu, um einen Federation-SSO-Ablauf zu starten, indem er Folgendes angibt

    1. Der zu verwendende SP

    2. Optional die URL, unter der der Browser des Benutzers nach Abschluss des Federation-SSO umgeleitet werden soll

  2. Nachdem der Benutzer identifiziert wurde, erstellt die IdP eine SSO-Antwort mit einer SAML 2.0-Assertion, die Benutzerinformationen sowie Authentifizierungsdaten enthält, und leitet den Browser des Benutzers mit der Nachricht und dem Parameter RelayState an den SP um

  3. Der Browser des Benutzers zeigt die SSO-Antwort an den SP-Server an

  4. Der SP validiert die SAML 2.0-Assertion und erstellt eine SSO-Session für den Benutzer. Der SSO-Server leitet dann den Browser des Benutzers zurück zur ursprünglich angeforderten Ressource

  5. Der Browser des Benutzers fordert Zugriff auf die Ressource an. Dieses Mal erteilt der SSO-Web-Agent Zugriff auf die Ressource

  6. Die Webanwendung gibt eine Antwort an den Browser des Benutzers zurück

Beschreibung der Abbildung SSO_Response_Screen.jpg

Schlussfolgerung

Wie in den verschiedenen Abläufen zu sehen ist, besteht der beste Ansatz bei einem Federation-Deployment darin, dass das Federation-SSO zur Laufzeit vom SSO-Server ausgelöst wird, wenn dies vom SSO-Server als erforderlich erachtet wird. Die anderen Fälle haben einen statischen Ansatz und üben immer einen Federation-SSO-Ablauf aus, selbst wenn er nicht erforderlich ist (wenn der Benutzer beispielsweise bereits eine gültige Session hat), und wenn unnötige Federation-Vorgänge ausgeführt werden, wirkt sich dies aus:

Weitere Lernressourcen

Sehen Sie sich weitere Übungen unter docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning-Kanal YouTube zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.