OAuth-Autorisierungscode-Gewährungs-Flow

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 2 Minuten Lesedauer
  • Der Autorisierungscode-Gewährungs-Flow ermöglicht einem Benutzer den Zugriff auf eine Ressource, indem er sich direkt bei einem OAuth-Server authentifiziert, der der Ressource vertraut, im Gegensatz zur Authentifizierung mit Benutzername/Passwort-Anmeldeinformationen.

    Diese Implementierung des OAuth-Autorisierungscode-Flows ermöglicht den Zugriff auf eine Ressource über REST. Das Autorisierungscode-Framework ruft das Zugriffstoken über die autorisierte URL ab, die der Benutzer konfiguriert, anstatt dass der Benutzer einen Benutzernamen/ein Passwort eingeben muss. Benutzername/Passwort werden niemals für den Client verfügbar gemacht, der Zugriff auf die Ressource anfordert.

    Eine ServiceNow -Instanz als Autorisierungsserver

    Der OAuth-Server ist normalerweise ein Autorisierungsserver einer Drittpartei. Sie können auch eine ServiceNow -Instanz als Autorisierungsserver angeben, der die Token für den Autorisierungscode-Flow ausgibt.

    Der Benutzer, der die eingeschränkte Ressource besitzt, muss den Zugriff autorisieren. Der Benutzer kann das ausgegebene Zugriffstoken auch jederzeit widerrufen, um den Zugriff zu beenden.

    Flow-Prozess für Autorisierungscode-Gewährung

    Der Flow-Prozess für die Autorisierungscode-Gewährung besteht aus diesen drei Schritten:

    In Schritt 1 initiiert die Clientanwendung oder Website einen REST-API-Aufruf in Form einer GET-Anforderung an die Instanz über den Benutzeragenten. Normalerweise wird der REST-Aufruf initiiert, wenn der Endbenutzer in der Clientanwendung oder auf der Website auf eine Schaltfläche oder einen Link klickt, um ein Zugriffstoken anzufordern. In der Clientanwendung muss der Endbenutzer auch die Autorisierungs-URL, die Token-URL, die Client-ID und den geheimen Clientschlüssel angeben. Eine Erklärung dieser Elemente finden Sie in den Feldbeschreibungen in diesem Thema: OAuth-Drittpartei verwenden. Wenn der Client einen Gewährungstyp anfordert, muss der Endbenutzer Autorisierungscodeauswählen.

    Beispiel für eine GET-Anforderung von der Client-Anwendung an die Instanz:
    https://myinstance.service-now.com/oauth_auth.do?response_type=code&redirect_uri={the_redirect_url}&client_id={the_client_identifier}
    Hinweis:
    response_type “ muss Code sein, um den standardmäßigen OAuth-Code-Gewährungs-Flow zu verwenden.
    Der Endbenutzer muss den Zugriff auf die eingeschränkte Ressource in der Instanz manuell zulassen. In der ServiceNow -Implementierung muss der Endbenutzer bei der Instanz angemeldet sein. Die Instanz fordert den Endbenutzer auf einer UI-Seite mit den Schaltflächen Zulassen und Ablehnen auf. Anweisungen finden Sie unter.

    Das Element, von dem die Client-Anwendung tatsächlich das Token anfordert, ist der von Ihnen erstellte Registrierungsdatensatz der OAuth-Provider-Anwendung, der auch als Autorisierungsendpunkt bezeichnet wird (siehe OAuth-Drittpartei verwenden). Der Authentifizierungscode wird vom Autorisierungsendpunkt an den Client gesendet. Sie geht nicht direkt an den Client, sondern an die Umleitungs-URL, die Sie im Formular „Autorisierungsendpunkt“ angeben. Diese URL wird auch als Rückruf-URL bezeichnet. Sie können diese URL von der Clientanwendung oder der Website abrufen.

    Beispielantwort der Instanz an die Clientanwendung mit Bereitstellung eines Autorisierungscodes:
    https/http://{callbackURL}?code={the actual auth code}

    Sobald die Client-Anwendung über den Autorisierungscode verfügt, verwendet der Client den Code, um das Zugriffstoken anzufordern. Der Autorisierungscode beweist, dass der Benutzer in Schritt 1 zugestimmt hat.

    Beispiel-POST-Anforderung von der Client-Anwendung an die Instanz ServiceNow, die den Authentifizierungscode bereitstellt und das Zugriffstoken anfordert:
    https://myinstance.service-now.com/oauth_token.do?grant_type=authorization_code&code={the auth code}&redirect_uri={the_same_redirect_url}&client_id={the_same_client_identifier}&client_secret={client_secret_value}

    Der Endpunkt in der Instanz gibt ein Zugriffstoken und ein Aktualisierungstoken zurück. Das Aktualisierungstoken kann verwendet werden, um zusätzliche Zugriffstoken anzufordern.

    Sie können die Token in der -Instanz verwalten, einschließlich des Widerrufs des Tokens. Siehe OAuth-Token verwalten.

    Die Client-Anwendung verwendet das Zugriffstoken, um sich bei der REST-API zu authentifizieren. Nach der Authentifizierung der Client-Anwendung gibt die REST-API die angeforderten Daten in einer JSON-Nutzlast zurück.

    Beispiel für eine GET-Anforderung für die JSON-Nutzlast von Daten für die Tabelle „Incident“ [incident]:
    https://myinstance.service-now.com/api/now/table/incident?access_token={the_token}
    Hinweis:
    Das System unterstützt auch implizite OAuth-Gewährungen, die auch als impliziter Gewährungscode-Flow bezeichnet werden.

    Integrationsunterstützung

    Der Autorisierungscode-Flow unterstützt die folgenden Integrationen in der Instanz:
    • Multi-SSO
    • SAML 2.0 Update 1
    • Multifaktor-Authentifizierung

    Die mobile Schnittstelle wird ebenfalls unterstützt.