Flow zur Gewährung des OAuth-Autorisierungscodes

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 2 Minuten Lesedauer
  • Der Autorisierungscode-Gewährungs-Flow ermöglicht es einem Anwender, auf eine Ressource zuzugreifen, indem er sich direkt bei einem OAuth-Server authentifiziert, der der Ressource vertraut, anstatt sich mit Anwendernamen/Passwort-Anmeldeinformationen zu authentifizieren.

    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 Anwender konfiguriert, anstatt dass der Anwender einen Anwendernamen/ein Passwort eingeben muss. Anwendername/Passwort werden niemals für den Client verfügbar gemacht, der Zugriff auf die Ressource anfordert.

    Eine Instanz ServiceNow als Autorisierungsserver

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

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

    Flow-Prozess zur Erteilung des Autorisierungscodes

    Der Flow-Prozess zur Erteilung des Autorisierungscodes besteht aus den folgenden drei Schritten:

    Im ersten Schritt initiiert die Client-Anwendung oder Website in einem REST-API-Aufruf über den -Benutzeragenten eine GET-Anforderung an die Instanz. Normalerweise wird der REST-Aufruf initiiert, wenn der Endanwender auf eine Schaltfläche oder einen Link in der Client-Anwendung oder auf der Website klickt, um ein Zugriffstoken anzufordern. In der Clientanwendung muss der Endanwender auch die Autorisierungs-URL, Token-URL, Client-ID und den geheimen Clientschlüssel angeben. Eine Erklärung dieser Elemente finden Sie in den Feldbeschreibungen in diesem Thema: OAuth-Drittpartei-Anbieter verwenden. Wenn der Client nach einem Erteilungstyp fragt, muss der Endanwender 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:
    Zur Verwendung des standardmäßigen OAuth-Flows zur Codegewährung muss für „ressource_type“ „ Code “ angegeben werden.
    Der Endanwender muss manuell Zugriff auf die eingeschränkte Ressource in der Instanz gewähren. Bei der Implementierung von ServiceNow muss der Endanwender bei der -Instanz angemeldet sein. Die Instanz fordert den Endanwender mit einer UI-Seite auf, die über die Schaltflächen Zulassen und Ablehnen verfügt.

    Das Element, von dem die Client-Anwendung das Token tatsächlich anfordert, ist der von Ihnen erstellte OAuth-Anbieter-Anwendungsregistrierungsdatensatz. Dieser wird auch als Autorisierungsendpunkt bezeichnet (siehe OAuth-Drittpartei verwenden). Der Autorisierungscode wird vom Autorisierungsendpunkt an den Client gesendet. Sie wird nicht direkt an den Client weitergeleitet, 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 Client-Anwendung oder von der Website von abrufen.

    Beispielantwort von der -Instanz an die Client-Anwendung, die einen Autorisierungscode bereitstellt:
    https/http://{callbackURL}?code={the actual auth code}

    Nachdem die Client-Anwendung nun über den Autorisierungscode verfügt, fordert der Client mit dem Code das Zugriffstoken an. Der Autorisierungscode bestätigt, dass der Anwender in Schritt 1 zugestimmt hat.

    Beispiel für eine 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. Mit dem Aktualisierungstoken können zusätzliche Zugriffstoken angefordert werden.

    Sie können die Token in der Instanz verwalten und auch das Token widerrufen. Siehe OAuth-Token verwalten.

    Die Client-Anwendung authentifiziert sich mit dem Zugriffstoken bei der REST-API. Nach dem Authentifizieren 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 Incident-Tabelle [incident]:
    https://myinstance.service-now.com/api/now/table/incident?access_token={the_token}
    Hinweis:
    Das System unterstützt auch implizite OAuth-Erteilungen , auch bekannt als impliziter Gewährungscode-Flow.

    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.