OAuth 2.0-Anmeldeinformationen für GitHub Apps – JWT

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 7 Minuten Lesedauer
  • Führen Sie die folgenden Schritte aus, um Ihre GitHub-Apps mit dem JWT-Bearer-Token zu integrieren.

    Bevor Sie beginnen

    Erforderliche Rolle:

    • oauth_admin in DevOps Change-Geschwindigkeit.
    • Administratorkonto in GitHub.

    Konfigurieren Sie die App GitHub in Ihrem Account GitHub (JWT).

    Erstellen Sie eine anwenderdefinierte GitHub App von Ihrem GitHub -Konto, um die OAuth 2.0-Authentifizierung mit Ihrer ServiceNow -Instanz zu aktivieren.

    Vorbereitungen

    GitHub Anforderung: App GitHub für Integration mit ServiceNowkonfiguriert

    Erforderliche Rolle: Keine Instanzrolle erforderlich

    Warum und wann dieser Vorgang ausgeführt wird

    Führen Sie diese Schritte in Ihrem Konto GitHub aus. Siehe Gebäude GitHub Apps Auf der Developer Site GitHub finden Sie Anweisungen zum Erstellen und Konfigurieren benutzerdefinierter Anwendungen.

    Prozedur

    1. Erstellen Sie in Ihrem Konto GitHub Ihre App GitHub, indem Sie zu navigieren Entwicklereinstellungen > GitHub-Apps.
    2. Geben Sie im Feld Homepage-URLden Wert https://ein.<instance-name> .service-now.com .
    3. Geben Sie im Feld Rückruf-URL für Anwenderautorisierungden Wert https://ein.<instance-name> .service-now.com/oauth_redirect.do
    4. Deaktivieren Sie im Abschnitt „Identifizieren und Autorisieren von Anwendern“ das Feld Anwenderautorisierungstoken ablaufen lassen.
    5. Wählen Sie im Abschnitt „Webhook“ das Feld Aktiv aus.
    6. Geben Sie im Feld Webhook-URLhttps://ein.<instance-name> .service-now.com/api/sn_devops/v2/devops/tool/apps?toolId=<Tool ID> , wobei Tool-ID Ihre GitHub Tool-ID (sys_id) von DevOps Change-Geschwindigkeitist.
      Hinweis:
      Wenn Sie das Tool neu erstellen und nicht über die Tool-ID verfügen, können Sie die Webhook-URL ohne Tool-ID eingeben und später konfigurieren. So konfigurieren Sie später:
      1. Navigieren Sie zur Tooldatensatzseite des verbundenen Tools.
      2. Wählen Sie Konfigurieren GitHub App, und wählen Sie Mit vorhandenem Token automatisch konfigurierenaus.

        Automatische Konfiguration mit vorhandenem Token.

      Dadurch wird die Webhook-URL der GitHub-App automatisch konfiguriert.
      Sie können die Tool-ID auf eine der folgenden Arten abrufen:
      • Beim Herstellen einer Verbindung mit dem Tool in DevOps Change-Geschwindigkeitist die Tool-ID in der Seiten-URL verfügbar. Beispiel: https://<instance-name> .service-now.com/.../sn_devops_tool/<Tool ID> /... .
      • Sie können die Webhook-URL von der Datensatzseite des Tools GitHub in DevOps Change-Geschwindigkeit, kopieren Konfigurieren > Manuell konfigurieren > Webhook-URL.
    7. Lassen Sie die verbleibenden Felder leer (Standard).
    8. Konfigurieren Sie im Abschnitt Repository-Berechtigungen die folgenden Einstellungen.
      Aktion Schreibgeschützt
      Überprüfungen Schreibgeschützt
      Inhalt Schreibgeschützt
      Bereitstellungen Lesen und schreiben
      Umgebungen Schreibgeschützt
      Metadaten Schreibgeschützt
      Abrufanforderungen Schreibgeschützt
      Geheimnisse Schreibgeschützt
      Webhooks Lesen und schreiben
      Hinweis:
      Zum Konfigurieren von Webhooks in ServiceNowsind Lese- und Schreibberechtigungen erforderlich.
      Hinweis:
      Wenn Sie bereits eine GitHub-App verwenden und Berechtigungen aktualisieren, müssen Sie diese Berechtigungen für Ihre GitHub-App überprüfen und akzeptieren. Sie können zu Ihrer App navigieren und „Konfigurieren > Anforderung überprüfen > Neue Berechtigungen akzeptieren“auswählen.
    9. Belassen Sie die verbleibenden Berechtigungen als Kein Zugriff (Standard).
    10. Wählen Sie im Abschnitt „Ereignisse abonnieren“ die Option Bereitstellungsschutzregel aus.
    11. Speichern Sie die Änderungen.
    12. Generieren Sie nach dem Erstellen der App GitHub einen neuen privaten Schlüssel, und speichern Sie ihn auf Ihrem Computer.
    13. Installieren Sie die neu erstellte App GitHub auf den Konten Ihrer Wahl.
      1. Wählen Sie auf der Einstellungsseite für GitHub-Apps Ihre App aus.
      2. Wählen Sie in der linken Sidebar App installierenaus.
      3. Wählen Sie Installieren neben der Organisation oder dem persönlichen Account, die das richtige Repository enthält.
      4. Installieren Sie die App in allen Repositorys oder wählen Sie Repositorys aus.
        Weitere Informationen finden Sie unter GitHub-Apps installieren.

    Client-ID zur Eigenschaft „DevOps“ hinzufügen

    Nach der Konfiguration Ihrer GitHub-App müssen Sie sicherstellen, dass das Präfix für die Client-ID (die ersten 3 oder mehr Zeichen der ID) der DevOps-Eigenschaft hinzugefügt wird: Client-ID-Bezeichner für GitHub-App.

    Vorbereitungen

    Erforderliche Rolle: sn_devops.admin

    Prozedur

    1. Navigieren zu Arbeitsbereiche > DevOps – Change-Arbeitsbereich > Administration > Systemkonfiguration > Eigenschaften.
    2. Ändern Sie den Anwendungsbereich in DevOps-Datenmodell.
    3. Suchen Sie nach der Eigenschaft: Client-ID-Bezeichner für GitHub-App [sn_devops.github_oauth_client_id_specifier].
    4. Geben Sie das Client-ID-Präfix (die ersten 3 Zeichen der ID) Ihrer GitHub-App für die Eigenschaft ein.
    5. Wählen Sie Speichern.

    Generieren Sie das Java KeyStore-Zertifikat für GitHub

    Generieren Sie ein Java KeyStore-Zertifikat (JKS) für die JWT-Authentifizierung.

    Vorbereitungen

    Erforderliche Rolle: Administrator

    Prozedur

    1. Erstellen Sie ein CA-signiertes Zertifikat mit dem privaten Schlüssel der App GitHub :
      openssl req -new -x509 -key <file-name>.pem -out <certificate-name>.pem -days 1095
    2. Geben Sie die erforderlichen Details ein.
    3. Erstellen Sie die PKCS 12-Datei mit dem privaten App-Schlüssel GitHub und dem CA-signierten Zertifikat:
      openssl pkcs12 -export -in <certificate-name>.pem -inkey <file-name>.pem -certfile <certificate-name>.pem -out <PKCS-12-file-name>.p12 
    4. Geben Sie das Exportpasswort an.
    5. Erstellen Sie die JKS-Datei:
      keytool -importkeystore -srckeystore <PKCS-12-file-name>.p12 -srcstoretype pkcs12 -destkeystore <JKS-certificate-filename>.jks -deststoretype JKS
    6. Geben Sie die Passwörter für Ziel- und Quell-Schlüsselspeicher an.

    Hängen Sie das Java KeyStore-Zertifikat GitHub an Ihre -Instanz an

    Aktivieren Sie die JWT-Bearer-Grant-Token-Authentifizierung, indem Sie das gültige GitHub Java KeyStore-Zertifikat (JKS) an Ihre ServiceNow-Instanz anhängen.

    Vorbereitungen

    Stellen Sie die Verfügbarkeit eines gültigen Java KeyStore-Zertifikats sicher.

    Erforderliche Rolle: Administrator

    Prozedur

    1. Navigieren zu Alle > Systemdefinition > Zertifikate.
    2. Wählen Sie Neu.
    3. Füllen Sie die Felder des Formulars aus.
      Tabelle : 1. Formularfelder „X.509-Zertifikat“.
      Feld Beschreibung
      Name Name zur eindeutigen Identifizierung des Datensatzes. Beispiel: Mein GitHub-App-Zertifikat.
      Benachrichtigung bei Ablauf Option zum Festlegen der Benutzer, die benachrichtigt werden sollen, wenn das Zertifikat abläuft.
      Tage vor Ablauf benachrichtigen Anzahl der Tage zum Senden einer Benachrichtigung, bevor das Zertifikat abläuft.
      Aktiv Option zum Aktivieren des -Zertifikats.
      Typ Option zum Auswählen des Zertifikattyps. Wählen Sie Java Key Storeaus.
      Läuft in Tagen ab Anzahl der Tage, bis das Zertifikat abläuft.
      Schlüsselspeicher-Passwort Dem Zertifikat zugeordnetes Passwort (Hinweis: das zuvor erstellte Ziel-KeyStore-Passwort).
      Kurzbeschreibung Zusammenfassung des Zertifikats.
    4. Wählen Sie das Anhangsymbol ( Anhangsymbol) und hängen Sie ein JKS-Zertifikat an.
    5. Wählen Sie Speicher/Zertifikate validieren aus.

    Erstellen Sie einen JWT-Signaturschlüssel für das JKS-Zertifikat GitHub .

    Erstellen Sie einen JSON-Web-Token-Signaturschlüssel (JWT), um ihn Ihrem GitHub Java KeyStore-Zertifikat zuzuweisen.

    Vorbereitungen

    Erforderliche Rolle: admin, sn_devops.admin

    Prozedur

    1. Navigieren zu Alle > System-OAuth > JWT-Schlüssel.
    2. Wählen Sie Neu.
    3. Füllen Sie die Felder des Formulars aus.
      Tabelle : 2. Formularfelder „JWT-Schlüssel“.
      Feld Beschreibung
      Name Name zur eindeutigen Identifizierung des JWT-Signaturschlüssels. Beispiel: Mein GitHub-App-JWT-Schlüssel.
      Signatur-Schlüsselspeicher Gültiges JKS-Zertifikat, das in der vorherigen Aufgabe angehängt wurde. Beispiel: Mein GitHub-App-Zertifikat.
      Schlüssel-ID Eindeutige ID, um zu identifizieren, welcher Schlüssel verwendet wird, wenn mehrere Schlüssel zum Signieren von Token verwendet werden.
      Signaturalgorithmus Algorithmus zum Signieren mit dem JWT-Schlüssel (Hinweis: RSA 256).
      Signaturschlüssel-Passwort Dem Signaturschlüssel zugeordnetes Passwort (Hinweis: das zuvor erstellte Quellschlüsselspeicher-Passwort).
      Aktiv Option zum Aktivieren des Schlüssels.
    4. Wählen Sie Absenden.

    Erstellen Sie einen JWT-Provider für Ihren GitHub -Signaturschlüssel

    Fügen Sie Ihrer -Instanz ServiceNow für GitHubeinen JSON-Web-Token-Provider (JWT) hinzu.

    Vorbereitungen

    Erforderliche Rolle: admin, sn_devops.admin

    Prozedur

    1. Navigieren zu Alle > System-OAuth > JWT-Anbieter.
    2. Wählen Sie Neu.
    3. Füllen Sie die Felder des Formulars aus.
      Tabelle : 3. Formularfelder des JWT-Providers
      Feld Beschreibung
      Name Name zur eindeutigen Identifizierung des JWT-Anbieters. Beispiel: Mein GitHub-App-JWT-Anbieter.
      Ablaufintervall (Sek.) Anzahl in Sekunden zum Festlegen der Lebensdauer von JWT-Provider-Token (Hinweis: Sie können dies als Standard belassen).
      Signierkonfiguration Gültiger JWT-Signaturschlüssel zuvor erstellt. Beispiel: Mein GitHub-App-JWT-Schlüssel.
    4. Klicken Sie mit der rechten Maustaste auf den Header des Formulars, und wählen Sie Speichernaus.
    5. Geben Sie Ihre GitHub App- App-ID (verfügbar im Abschnitt „Info“ Ihrer Konfiguration der App GitHub in GitHub ) als Wert des iss -Anspruchs in der zugehörigen Liste „Standardansprüche“ ein.
    6. Aud- und Sub- Werte leer lassen (Standard).

    GitHub als OAuth-Provider (JWT) registrieren

    Verwenden Sie die Informationen, die während der Konfiguration des App-Accounts GitHub von generiert wurden, um GitHub als OAuth-Anbieter zu registrieren und der Instanz die Anforderung von OAuth 2.0-Token zu gestatten.

    Vorbereitungen

    Erforderliche Rolle: admin, sn_devops.admin

    Prozedur

    1. Navigieren zu Alle > System-OAuth > Applikationsregistrierung.
    2. Wählen Sie Neu.
      Die Frage Welche Art von OAuth-Anwendung? Meldung wird angezeigt.
    3. Wählen Sie Verbindung zu einem fremden OAuth-Provider herstellen aus.
    4. Füllen Sie die Felder des Formulars aus.
      Tabelle : 4. Formularfelder „Anwendungsregistrierung“.
      Feld Beschreibung
      Name Name zur eindeutigen Identifizierung des Datensatzes. Geben Sie beispielsweise Mein GitHub-App-Anbieterein.
      Client-ID Client-ID Ihrer App GitHub (Hinweis: verfügbar im Abschnitt „Info“ Ihrer Konfiguration der App GitHub in GitHub ).
      Geheimer Clientschlüssel Geheimer Clientschlüssel Ihrer App GitHub (Hinweis: verfügbar im Abschnitt „Info“ Ihrer Konfiguration der App GitHub in GitHub ).
      OAuth-API-Skript Option, mit der Sie auf eine geänderte OAuthUtil-Skripteinbindung verweisen können. Wählen Sie OAuthDevOpsGitHubJWTHandleraus.
      Standardgewährungstyp Typ der Erteilung, die der Anwendungsregistrierung zugeordnet ist. Wählen Sie JWT Beareraus.
      Token-URL Die Position des Tokenendpunkts, den die Instanz zum Abrufen und Aktualisieren von Token verwendet.

      Geben Sie für die Cloud-Version Folgendes ein: https://api.github.com/app/installations/<installation_id> /access_tokens

      Geben Sie für die Enterprise-Version Folgendes ein: https://<HOST_URL> /api/v3/app/installations/<installation_id> /access_tokens

      Um die Installations-ID zu erhalten, wechseln Sie in Ihrer GitHub-App-Konfiguration in GitHub zum Abschnitt „App installieren“, und wählen Sie das Zahnradsymbol, um Ihre App zu konfigurieren. Die Installations-ID befindet sich in der Webseiten-URL. Beispiel: https://github.com/settings/installations/<installation_id> .

    5. Behalten Sie für die restlichen Formularfelder den Standardwert bei.
      Formular „Anwendungsregistrierung“.
    6. Klicken Sie mit der rechten Maustaste auf den Header des Formulars, und wählen Sie Speichernaus.
    7. Öffnen Sie das Standardprofil, das in der zugehörigen Liste OAuth-Entitätsprofile erstellt wurde.
    8. Füllen Sie das Feld JWT-Provider mit dem zuvor erstellten JWT-Provider aus, und speichern Sie das Formular.
    9. Navigieren Sie zu Schlüsselverwaltung > Modulzugriffsrichtlinien > Alle.
    10. Wählen Sie die Richtlinie aus, die com_snc_platform_security_oauth_glideencrypter als Wert im Feld Krypto-Modul und Skripteinbindung: OAuthDevOpsGitHubJWTHandler als Wert im Feld Zielskript enthält.
    11. Stellen Sie sicher, dass das Feld Ergebnis auf Nachverfolgen festgelegt ist, und speichern Sie die Änderungen.
      Formular, das zeigt, dass das Ergebnisfeld auf „Nachverfolgung“ festgelegt ist.

    Anmeldeinformationsdatensatz für GitHub App Provider (JWT) erstellen

    Erstellen Sie einen Anmeldeinformationsdatensatz für den zuvor erstellten App-Anbieter GitHub, um Aktionen zu autorisieren.

    Vorbereitungen

    Erforderliche Rolle: admin, sn_devops.admin

    Prozedur

    1. Navigieren zu Alle > Verbindungen und Anmeldeinformationen > Anmeldeinformationen.
    2. Wählen Sie Neu.
      Im Feld Welche Art von Anmeldeinformationen möchten Sie erstellen? Meldung wird angezeigt.
    3. Wählen Sie OAuth 2.0-Anmeldeinformationen aus.
    4. Füllen Sie die Felder des Formulars aus.
      Tabelle : 5. Formularfelder für OAuth 2.0-Anmeldeinformationen
      Feld Wert erforderlich
      Name Name zur eindeutigen Identifizierung des Datensatzes. Geben Sie beispielsweise Meine GitHub-App-Anmeldeinformationen ein.
      Aktiv Option zum Aktivieren des Datensatzes.
      OAuth-Einheitenprofil In der Anwendungsregistrierung erstelltes Standard-OAuth-Entitätsprofil.
    5. Speichern Sie den Datensatz.
    6. Wählen Sie den zugehörigen Link OAuth-Token abrufen aus, um das OAuth-Token zu generieren.