Workflow zur Autorisierungscodegewährung

  • Freigeben Version: Zurich
  • Aktualisiert 13. März 2026
  • 5 Minuten Lesedauer
  • Die OAuth-Autorisierungscodegewährung ist ein sicherer und weit verbreiteter Flow für Web-, Mobile- oder Desktop-Apps, die mit Zustimmung des Anwenders auf Anwenderdaten zugreifen. Es unterstützt sowohl private Clients (mit einem geheimen Client) als auch öffentliche Clients (mit PKCE).

    Vorbereitungen

    Erforderliche Rolle: oauth_admin, mi_admin, admin

    Warum und wann dieser Vorgang ausgeführt wird

    Diese Themensammlung enthält Informationen dazu, wie eine Client-Anwendung den Flow Autorisierungscode-Gewährung verwenden kann, um ein Token von ServiceNow abzurufen und API-Aufrufe mit diesem Token durchzuführen. Private Clients verwenden das geheime Clientgeheimnis, während öffentliche Clients die PKCE-Code-Challenge verwenden.

    Abbildung : 1. Autorisierungs-Workflow
    Autorisierungs-Workflow

    Prozedur

    1. Melden Sie sich über die Client-Anwendung an.

      Der Anwender beginnt den Anmeldevorgang über die Client-Anwendungsschnittstelle.

    2. Initiieren Sie die Autorisierungsanforderung.

      Der Client leitet den Anwender zum ServiceNow-Autorisierungs-Endpunkt um. Die Methode zum Initiieren der Autorisierungsanforderung hängt vom Typ des Clients ab: Öffentlich oder privat.

      Öffentliche Clients

      Öffentliche Clients (Beispiel: Mobile oder einseitige Anwendungen) können kein geheimes Clientgeheimnis sicher speichern. Daher müssen sie verwenden Nachweisschlüssel für Codeaustausch (PKCE) Um die Sicherheit zu verbessern.

      • Fügen Sie in die Autorisierungsanforderung ein PKCE-Code-Herausforderung Und geben Sie an Code-Abfragemethode .
      • Während der Tokenanforderung muss der Client den senden Codeverifizierer Dient zum Validieren des Autorisierungscodes.
      Führen Sie eine GET-Anforderung an den Autorisierungsendpunkt mit den folgenden Parametern aus:
      Method: GET
      Endpoint: https://<servicenow_base_url>/oauth_auth.do
      Tabelle : 1. Autorisierungsanforderungsparameter (öffentlicher Client – PKCE)
      Parameter Erforderlich Beschreibung
      Response_type Ja Legen Sie den Wert auf fest Code Zum Initiieren des Autorisierungscode-Flows.
      client_id Ja Der eindeutige Bezeichner für Ihre Client-Anwendung.

      FORMAT: YOUR_CLIENT_ID

      Umleiten_URI Ja Der URI, an den ServiceNow den Autorisierungscode sendet.

      Beispiel: https://yourapp.com/callback

      Code_Challenge Ja Ein base64url-codierter SHA-256-Hash des Codeverifizierers. Dies wird als Teil des PKCE-Flows verwendet.
      Code_Challenge_method Ja Gibt die für die Codeabfrage verwendete Transformationsmethode an. Auf festlegen S256 .
      scope Optional Eine durch Leerzeichen getrennte Liste der angeforderten Bereiche.

      Beispiel: Incident_read Incident_write .

      state Ja Ein vom Client generierter Wert, der zur Vermeidung von CSRF-Angriffen verwendet wird. Der Wert wird im Umleitungs-URI unverändert zurückgegeben, sodass der Client ihn validieren kann.
      Hinweis:
      Ab Madrid-Release die Systemeigenschaft Glide.oauth.State.Parameter.erforderlich Schreibt die Verwendung von vor status Parameter in den OAuth-Anforderungen. Die status Eigenschaft ist auf festgelegt Wahr Standardmäßig in den neuen Instanzen und Optional In aktualisierten Instanzen. Falls fehlt status Parameter, die Autorisierungsanforderung schlägt fehl, und der folgende Fehler wird angezeigt: Fehlender Statusparameter in Anforderung .
      Private Clients

      Private Clients (Beispiel: Serverseitige Anwendungen) können ein geheimes Clientgeheimnis sicher speichern und erfordern keine PKCE.

      • Die Autorisierungsanforderung wird initiiert, indem der Anwender zum Autorisierungsendpunkt umgeleitet wird. Es ist keine geheime Clientcodeabfrage oder PKCE-Code erforderlich In diesem Schritt.
      • Während der Tokenanforderung enthält der Client den Geheimer Clientschlüssel Zusammen mit Autorisierungscode Um das Zugriffstoken zu erhalten.
      Führen Sie eine GET-Anforderung an den Autorisierungsendpunkt mit den folgenden Parametern aus:
      Method: GET
      Endpoint: https://<servicenow_base_url>/oauth_auth.do
      Tabelle : 2. Autorisierungsanforderungsparameter (Private Client-Secret)
      Parameter Erforderlich Beschreibung
      Response_type Ja Legen Sie den Wert auf fest Code Zum Initiieren des Autorisierungscode-Flows.
      client_id Ja Der eindeutige Bezeichner für Ihre Client-Anwendung.

      FORMAT: YOUR_CLIENT_ID

      Umleiten_URI Ja Der URI, an den ServiceNow den Autorisierungscode sendet.

      Beispiel: https://yourapp.com/callback

      scope Optional Eine durch Leerzeichen getrennte Liste der angeforderten Bereiche.

      Beispiel: Incident_read Incident_write .

      state Ja Ein vom Client generierter Wert, der verwendet wird, um Site-übergreifende Angriffe auf Anforderungsfälschung (CSRF) zu vermeiden. Der Wert wird im Umleitungs-URI unverändert zurückgegeben, sodass der Client ihn validieren kann.
    3. Melden Sie sich an, und gewähren Sie die Zugriffseinwilligung für die Client-Anwendung.
      Melden Sie sich bei an ServiceNow(Oder IdP, wenn SSO aktiviert ist) und gewähren Sie die Zugriffseinwilligung für die Clientanwendung.
    4. ServiceNow(Oder IdP, wenn SSO aktiviert ist) validiert die Anmeldeinformationen und ServiceNow Gibt einen Autorisierungscode an den Client zurück.
      Nach der erfolgreichen Authentifizierung wird der Browser zu weitergeleitet Umleiten_URI , Und der Autorisierungscode ist in der Abfragezeichenfolge enthalten:
      https://yourapp.com/callback?code=AUTH_CODE&state=xyz123
      
    5. Initiieren Sie die Autorisierungsanforderung.

      Der Client leitet den Anwender für ein Zugriffstoken zum ServiceNow-Autorisierungs-Endpunkt um. Die Methode zum Initiieren der Autorisierungsanforderung hängt vom Typ des Clients ab: Öffentlich oder privat.

      Öffentliche Clients

      Öffentliche Clients (Beispiel: Mobile oder einseitige Anwendungen) können kein geheimes Clientgeheimnis sicher speichern. Daher müssen sie verwenden Nachweisschlüssel für Codeaustausch (PKCE) Um die Sicherheit zu verbessern.

      • Fügen Sie in die Autorisierungsanforderung ein PKCE-Code-Herausforderung Und geben Sie an Code-Abfragemethode .
      • Während der Tokenanforderung muss der Client den senden Codeverifizierer Dient zum Validieren des Autorisierungscodes.
      Der Client sendet eine POST-Anforderung an den Token-Endpunkt mit den folgenden Parametern:
      
      Method: POST  
      Endpoint: https://<servicenow_base_url>/oauth_token.do  
      Headers: Content-Type: application/x-www-form-urlencoded
      Tabelle : 3. Token-Anforderungsparameter (öffentlicher Client-PKCE)
      Parameter Erforderlich Beschreibung
      Grant_type Ja Legen Sie den Wert auf fest Authorization_Code Um den Code gegen ein Token auszutauschen.
      Code Ja Der vom Autorisierungsendpunkt empfangene Autorisierungscode.
      Umleiten_URI Ja Der in der anfänglichen Autorisierungsanforderung verwendete URI.

      Beispiel: https://yourapp.com/callback

      client_id Ja Der eindeutige Bezeichner für Ihre Client-Anwendung.
      Code_Verifier Ja Die ursprüngliche Zeichenfolge, die zum Generieren der PKCE verwendet wird Code_Challenge .
      state Ja Ein vom Client generierter Wert, der verwendet wird, um CSRF-Angriffe zu verhindern. Der Wert wird im Umleitungs-URI unverändert zurückgegeben, sodass der Client ihn validieren kann.
      Private Clients

      Private Clients (Beispiel: Serverseitige Anwendungen) können ein geheimes Clientgeheimnis sicher speichern und erfordern keine PKCE.

      • Die Autorisierungsanforderung wird initiiert, indem der Anwender zum Autorisierungsendpunkt umgeleitet wird. Es ist keine geheime Clientcodeabfrage oder PKCE-Code erforderlich In diesem Schritt.
      • Während der Tokenanforderung enthält der Client den Geheimer Clientschlüssel Zusammen mit Autorisierungscode Um das Zugriffstoken zu erhalten.
      Führen Sie eine POST-Anforderung an den Autorisierungsendpunkt mit den folgenden Parametern aus:
      
      Method: POST 
      Endpoint: https://<servicenow_base_url>/oauth_token.do   
      Headers: Content-Type: application/x-www-form-urlencoded
      Tabelle : 4. Token-Anforderungsparameter (Privater Client-Client-Geheimschlüssel)
      Parameter Erforderlich Beschreibung
      Grant_type Ja Legen Sie den Wert auf fest Authorization_Code Um den Code gegen ein Token auszutauschen.
      Code Ja Der vom Autorisierungsendpunkt empfangene Autorisierungscode.
      Umleiten_URI Ja Der in der anfänglichen Autorisierungsanforderung verwendete URI.

      Beispiel: https://yourapp.com/callback

      client_id Ja Der eindeutige Bezeichner für Ihre Client-Anwendung.
      client_secret Ja Das Geheimnis des Clients, das zur Authentifizierung beim Token-Endpunkt verwendet wird.
      state Ja Ein vom Client generierter Wert, der verwendet wird, um CSRF-Angriffe zu verhindern. Der Wert wird im Umleitungs-URI unverändert zurückgegeben, sodass der Client ihn validieren kann.
    6. Greifen Sie auf zu ServiceNow APIs mit dem Zugriffstoken.
      Beispiel:
      Stellen Sie mithilfe des Zugriffstoken eine GET-Anforderung an die APIs. Schließen Sie das Zugriffstoken in ein Autorisierung Header.
      Method: GET
      End Point: https://<servicenow_base_url>/api/now/incident  
      Authorization: Bearer YOUR_ACCESS_TOKEN
    7. Verlängern Sie das Zugriffstoken, wenn es abgelaufen ist.
      Stellen Sie eine POST-Anforderung, um das Zugriffstoken (nur private Clients) mit den folgenden Parametern zu aktualisieren:
      
      Method: POST  
      Endpoint: https://<servicenow_base_url>/oauth_token.do  
      Headers: Content-Type: application/x-www-form-urlencoded
      Tabelle : 5. Token-Anforderungsparameter Aktualisieren (Privater Client)
      Parameter Erforderlich Beschreibung
      Grant_type Ja Legen Sie den Wert auf fest REFRESH_Token Um ein neues Zugriffstoken anzufordern.
      REFRESH_Token Ja Das Aktualisierungstoken, das zuvor vom Token-Endpunkt ausgegeben wurde.
      client_id Ja Der eindeutige Bezeichner für Ihre Client-Anwendung.
      client_secret Ja Das geheime Clientgeheimnis, das zur Authentifizierung beim Token-Endpunkt verwendet wird.