Prozess-Flow „Anmeldung“ (AuthnRequest)

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 1 Minute Lesedauer
  • SAML 2,0 gibt ein Webbrowser-SSO-Profil an, das den Austausch von Informationen zwischen einem Identity Provider (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. Wenn sie vorhanden sind, hat der Anwender bereits mit dem IdP validiert und kann die Schritte 2–6 überspringen.

    AuthnRequest an Identitätsanbieter ausstellen

    Die Instanz erstellt einen AuthnRequest Soll mithilfe von an den IdP gesendet werden SAMLRequest Wert. Die Instanz erstellt und sendet auch einen RelayStatus URL-Parameterwert.

    Die RelayStatus Token ist ein undurchsichtiger Verweis auf Statusinformationen, die beim Service Provider verwaltet werden. Der Wert von SAMLRequest 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 SAMLRequest 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 SAMLResponse <tt>Und <tt>RelayStatus URL-Parameter (siehe Schritt 3).

    Antworten Sie mit SAMLResponse und RelayState

    Nach dem Sammeln 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 RelayStatus Parameter stammt aus diesem Schritt. Der Wert von SAMLResponse 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 SAMLResponse

    Die SAMLResponse Der Wert ist base64 decodiert und aufbläht, um das XML-Dokument in Schritt 3 anzuzeigen. Das Anmeldeskript extrahiert den XML-Wert aus dem //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 .