Prozess-Flow für Anmeldung (AuthnRequest)

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 1 Minute Lesedauer
  • SAML 2,0 gibt ein Webbrowser-SSO-Profil an, das den Austausch von Informationen zwischen einem Identitätsanbieter (IDP), einem Service Provider (SP) und einem Prinzipal (Anwender) in einem Webbrowser umfasst.

    Der Identitätsanbieter kann ein beliebiger SSO-Service sein, der SAML-Authentifizierungsservices anbietet (z. B. SSOCircle). Der Service Provider ist immer eine Instanz. Der Nachrichten-Flow beginnt mit einer Anforderung für eine gesicherte Ressource beim Service Provider.

    Fordern Sie die Zielressource im SP an

    Der Prinzipal fordert eine Zielressource beim Service Provider an:

    https://instance.service-now.com/

    Die Instanz überprüft die Anforderung, um festzustellen, ob die Parameter „SAMLRequest“ und „RelayState URL“ vorhanden sind. Falls vorhanden, hat der Anwender bereits mit dem IDP validiert und kann die Schritte 2–6 überspringen.

    Autorisierungsanforderung an Identitätsanbieter ausstellen

    Die Instanz erstellt einen Authentifizierungsanforderung Soll mithilfe von an den IDP gesendet werden SAMLAnforderung Wert. Die Instanz erstellt und sendet auch Relaisstatus URL-Parameterwert.

    Die Relaisstatus Token ist ein undurchsichtiger Verweis auf Statusinformationen, die beim Service Provider verwaltet werden. Der Wert von SAMLAnforderung Parameter ist der Deflated- und base64-codierte Wert von <samlp:AuthnRequest> Element:
    <samlp:AuthnRequest    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"    ID="identifier_1"    Version="2.0"    IssueInstant="2004-12-05T09:21:59Z"    AssertionConsumerServiceIndex="0"><saml:Issuer>https://sp.example.com/SAML2</saml:Issuer><samlp:NameIDPolicy      AllowCreate="true"      Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/></samlp:AuthnRequest>

    Die Integration codiert dann die URL <samlp:AuthnRequest> Element und sendet es als SAMLAnforderung URL-Parameter.

    Der SSO-Service verarbeitet <samlp:AuthnRequest> Element durch URL-Decodierung, base64-Decodierung und Aufblähung der Anforderung in dieser Reihenfolge. Anschließend wird eine Sicherheitsprüfung durchgeführt. Wenn der Anwender keinen gültigen Sicherheitskontext hat, identifiziert der IDP den Anwender, indem er zur Eingabe der Anmeldeinformationen auffordert. Wenn der Anwender bereits angemeldet ist, antwortet der IDP einfach mit SAMLAntwort <tt>Und <tt>Relaisstatus URL-Parameter (siehe Schritt 3).

    Antworten Sie mit einer SAMLResponse und einem RelayState

    Nach der Erfassung der erforderlichen Anmeldeinformationen validiert der SSO-Service die Anforderung und antwortet mit einem Dokument, das ein XHTML-Formular enthält:
    <formmethod="post"action="https://instance.service-now.com/navpage.do" ...><input type="hidden" name="SAMLResponse" value="response ..." /><input type="hidden" name="RelayState" value="token ..." />
        ...
        <input type="submit" value="Submit" /></form>
    Der Wert von Relaisstatus Parameter stammt aus diesem Schritt. Der Wert von SAMLAntwort Parameter ist die base64-Codierung des folgenden Elements <samlp:Response> Element:
    <samlp:Responsexmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"  ID="s2cdc74f37f923e26fe1aeec42b70a93d24230334f"  InResponseTo="90AA6073F01567BFB0DF194F596314E2"  Version="2.0"  IssueInstant="2010-04-29T23:21:51Z"  Destination="https://dloomac.service-now.com/navpage.do"><saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://idp.ssocircle.com</saml:Issuer><samlp:Status xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"><samlp:StatusCode xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"       Value="urn:oasis:names:tc:SAML:2.0:status:Success"></samlp:StatusCode></samlp:Status><saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"    ID="s23e536bfc51b8487d4d3299dec162d9c2e338823b"    IssueInstant="2010-04-29T23:21:51Z"    Version="2.0"><saml:Issuer>http://idp.ssocircle.com</saml:Issuer><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
     
    ...
          </Signature><saml:Subject><saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"            NameQualifier="http://idp.ssocircle.com"             SPNameQualifier="https://dloomac.service-now.com/navpage.do">david.loo@service-now.com</saml:NameID><saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"><saml:SubjectConfirmationData              InResponseTo="90AA6073F01567BFB0DF194F596314E2"              NotOnOrAfter="2010-04-29T23:31:51Z"              Recipient="https://dloomac.service-now.com/navpage.do" /></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore="2010-04-29T23:11:51Z"        NotOnOrAfter="2010-04-29T23:31:51Z"><saml:AudienceRestriction><saml:Audience>https://dloomac.service-now.com</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant="2010-04-29T23:21:51Z"        SessionIndex="s2dbf89ab99001e0e8cdaed67266d9d4b21b968a04"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement></saml:Assertion></samlp:Response>

    Validieren Sie die SAMLAntwort

    Die SAMLAntwort Der Wert ist base64 decodiert und aufgebläht, um das XML-Dokument in Schritt 3 anzuzeigen. Das Anmeldeskript extrahiert den XML-Wert aus //Betreff/NameID Element und verwendet es, um einen vorhandenen Anwender in der Anwendertabelle zu suchen.

    Das Anmeldeskript extrahiert auch die Sitzungs-ID aus //AuthnStatement/@SessionIndex Element und speichert es für LogoutRequest .