Ein Browser-Zertifikat ist ein signiertes Dokument und mit dem öffentlichen Schlüssel der Zertifizierungsstelle kann mein Benutzeragent es validieren.
In der Metadatendatei von SAML ist zwar auch ein Zertifikat vorhanden, aber es scheint einfach etwas anderes zu sein. Was ist das und wozu dient es genau?
Antwort1
Es wird verwendet, umproduzierenein signiertes Dokument. Das Zertifikat in den Metadaten des IdP wird zum Signieren der SAML-Token („Assertions“) verwendet, die vom Identitätsanbieter (IdP) ausgestellt und an den Dienstanbieter (SP) übertragen werden.
Da die Behauptung über den Webbrowser des Benutzers übertragen wird, muss sie vor Manipulationen durch den Benutzer geschützt werden (z. B. damit der Benutzer keine weiteren Gruppen oder andere Attribute hinzufügen kann). Daher wird sie mit dem privaten Schlüssel des IdP digital signiert und der SP überprüft diese Signatur, bevor Ihnen die Anmeldung gestattet wird.
Mit anderen Worten: Wenn SAML-Assertionen in etwa den signierten JWT-Token in OIDC entsprechen, werden die Zertifikate wie JWT-Signaturschlüssel verwendet.
(Eigentlich könnte man die SAML-Assertion vielleicht als „Zertifikat“ und den ausstellenden IdP als „Zertifizierungsstelle“ bezeichnen …)
Darüber hinaus könnte der SP auch über ein eigenes Zertifikat verfügen, mit dem der IdPVerschlüsselndie Behauptung (z. B. wenn sie interne Daten enthält, die nicht an den Benutzer weitergegeben werden sollten, wie z. B. Shadowban-Status, oder einfach nur zur Minimierung der Offenlegung, wie z. B. SSNs). Dies ist optional.
Ein weiterer Grund für SPs, eigene Zertifikate zu haben, ist, dass sie unterschreiben könnenAbmeldeanforderungendie an den IdP zurückgesendet werden. Das SAML2-Protokoll unterstützt „Single Logout“, bei dem Sie sich durch die Abmeldung von einem SP auch von allen anderen sowie vom IdP selbst abmelden. Dieses Protokoll beinhaltet jedoch eine lange Kette von Weiterleitungen über Standorte, die sich untereinander nicht unbedingt vertrauen.
Randbemerkung: Obwohl Zertifikate in SAML dieselbe Art von „signiertem Dokument“ sind wie in TLS, besteht ein großer Unterschied darin, dass SAML-Zertifikate in den meisten Fällen selbstsigniert sind und der SP sich nur um den genauen öffentlichen Schlüssel kümmert und alle anderen Felder ignoriert. (Der Hauptgrund für die Verwendung von X.509-Zertifikaten ist, dass SAML den bereits vorhandenen XML-DSig-Standard verwendet und alle Tools/Bibliotheken mit Zertifikaten arbeiten müssen.) Dies bedeutet jedoch nicht, dass siekonnte nichtvon einer Zertifizierungsstelle ausgestellt sein; das wird unterstützt, ist aber selten erforderlich.