OAuth 2,0-Anmeldeinformationen für GitHubApps: 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.
    • Administrator-Account in GitHub.

    Konfigurieren Sie GitHubApp in Ihrem GitHubAccount (JWT)

    Erstellen Sie einen anwenderdefinierten GitHubApp von Ihrem GitHubAccount zum Aktivieren der OAuth 2,0-Authentifizierung mit Ihrem ServiceNowInstanz.

    Vorbereitungen

    GitHubAnforderung: GitHubApp für die Integration in konfiguriert ServiceNow

    Rolle erforderlich: Keine Instanzrolle erforderlich

    Warum und wann dieser Vorgang ausgeführt wird

    Führen Sie diese Schritte über aus GitHubAccount. Siehe Gebäude GitHub Apps Auf GitHubEntwickler-Website für Anweisungen zum Erstellen und Konfigurieren anwenderdefinierter Anwendungen.

    Prozedur

    1. Von Ihrem GitHubAccount, erstellen Sie Ihren GitHubApp, indem Sie zu navigieren Entwicklereinstellungen > GitHub-Appsan.
    2. In Homepage-URL Feld eingeben https://<instance-name>.service-now.com .
    3. In Rückruf-URL für Anwenderautorisierung Feld eingeben https://<instance-name>.service-now.com/oauth_redirect.do .
    4. In Identifizieren und Autorisieren von Anwendern Deaktivieren Sie den Abschnitt Anwenderautorisierungstoken ablaufen lassen Feld.
    5. In Webhook Wählen Sie den Abschnitt aus Aktiv Feld.
    6. In Webhook-URL Feld eingeben https://<instance-name>.service-now.com/api/sn_devops/v2/devops/tool/apps?toolId=<Tool ID> , Wobei die Tool-ID Ihre ist GitHubTool-ID (sys_ID) von DevOps Change-Geschwindigkeit.
      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 Aus Konfigurieren Sie die GitHub-App , Und wählen Sie dann aus Automatische Konfiguration mit vorhandenem Token .

        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 der Verbindung mit dem Tool in DevOps Change-Geschwindigkeit, Die Tool-ID ist in der Seiten-URL verfügbar. Beispiel: https://<instance-name>.service-now.com/.../sn_devops_tool/<Tool ID>/... .
      • Sie können die Webhook-URL aus kopieren GitHubTooldatensatzseite in DevOps Change-Geschwindigkeit, Von Konfigurieren > Manuell konfigurieren > Webhook-URLan.
    7. Lassen Sie die verbleibenden Felder leer (Standard).
    8. In Repository-Berechtigungen Konfigurieren Sie die folgenden Einstellungen.
      Aktion Abgebrochen
      Überprüfungen Abgebrochen
      Inhalt Abgebrochen
      Bereitstellungen Lesen und schreiben
      Umgebungen Abgebrochen
      Metadaten Abgebrochen
      Abrufanforderungen Abgebrochen
      Geheimnisse Abgebrochen
      Webhooks Lesen und schreiben
      Hinweis:
      Lese- und Schreibberechtigungen sind erforderlich, um Webhooks von zu konfigurieren ServiceNow.
      Hinweis:
      Wenn Sie bereits eine GitHub-App verwenden und eine der Berechtigungen aktualisieren, müssen Sie diese Berechtigungen für Ihre GitHub-App überprüfen und akzeptieren. Sie können zu Ihrer App navigieren und auswählen Konfigurieren > Anforderung überprüfen > neue Berechtigungen akzeptieren .
    9. Belassen Sie die verbleibenden Berechtigungen als Kein Zugriff (Standard).
    10. In Ereignisse abonnieren Wählen Sie den Abschnitt aus Bereitstellungsschutzregel Option.
    11. Speichern Sie die Änderungen.
    12. Nachdem erstellt wurde GitHubApp generieren Sie einen neuen privaten Schlüssel, und speichern Sie ihn auf Ihrem Computer.
    13. Installieren Sie neu erstellte GitHubApp auf den Accounts Ihrer Wahl.
      1. Wählen Sie auf der Seite „GitHub-Apps-Einstellungen“ Ihre App aus.
      2. Wählen Sie in der linken Sidebar aus Installieren Sie Die App .
      3. Wählen Sie Aus Installieren Neben der Organisation oder dem persönlichen Account, das das richtige Repository enthält.
      4. Installieren Sie die App auf allen Repositorys, oder wählen Sie Repositorys aus.
        Weitere Informationen finden Sie unter GitHub-Apps werden installiert .

    Fügen Sie der DevOps-Eigenschaft eine Client-ID hinzu

    Nach der Konfiguration Ihrer GitHub-App müssen Sie sicherstellen, dass das Client-ID-Präfix (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 > Eigenschaftenan.
    2. Ändern Sie den Anwendungsbereich in DevOps-Datenmodell.
    3. Nach der Eigenschaft suchen: 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 oder mehr Zeichen der ID) Ihrer GitHub-App für die Eigenschaft ein.
    5. Wählen Sie Speichern.

    Generieren Sie das Java-Schlüsselspeicher-Zertifikat für GitHub

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

    Vorbereitungen

    Erforderliche Rolle: Administrator

    Prozedur

    1. Erstellen Sie ein von CA signiertes Zertifikat mit GitHubPrivater App-Schlüssel:
      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 GitHubPrivater App-Schlüssel und VON CA signiertes 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. JKS-Datei erstellen:
      keytool -importkeystore -srckeystore <PKCS-12-file-name>.p12 -srcstoretype pkcs12 -destkeystore <JKS-certificate-filename>.jks -deststoretype JKS
    6. Geben Sie die Ziel- und Quellschlüsselspeicher-Passwörter an.

    Hängen Sie an GitHubJava-Schlüsselspeicherzertifikat für Ihre Instanz

    Aktivieren Sie die Authentifizierung des JWT-Bearer-Gewährungs-Tokens, indem Sie das gültige JKS-Zertifikat (GitHub Java Keystore) an Ihre ServiceNow-Instanz anhängen.

    Vorbereitungen

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

    Erforderliche Rolle: Administrator

    Prozedur

    1. Navigieren zu Alle > Systemdefinition > Zertifikatean.
    2. Wählen Sie Neu.
    3. Füllen Sie im Formular die Felder aus.
      Tabelle : 1. X.509-Zertifikatformularfelder
      Feld Beschreibung
      Name Name zur eindeutigen Identifizierung des Datensatzes. Beispiel: Mein GitHub-App-Zertifikat .
      Benachrichtigung bei Ablauf Option zum Festlegen der Anwender, die benachrichtigt werden sollen, wenn das Zertifikat abläuft.
      Tage vor Ablauf benachrichtigen Anzahl der Tage, die eine Benachrichtigung gesendet werden soll, bevor das Zertifikat abläuft.
      Aktiv Option zum Aktivieren des Zertifikats.
      Typ Option zum Auswählen des Zertifikattyps. Wählen Sie Aus Java-Schlüsselspeicher .
      Läuft in Tagen ab Anzahl der Tage, bis das Zertifikat abläuft.
      Schlüsselspeicher-Passwort Passwort, das dem Zertifikat zugeordnet ist (Hinweis: Das zuvor erstellte Zielschlüsselspeicher-Passwort).
      Kurzbeschreibung Zusammenfassung des Zertifikats.
    4. Wählen Sie das Symbol „Anhänge“ aus ( Symbol für Anhänge) Und hängen Sie ein JKS-Zertifikat an.
    5. Wählen Sie Aus Validieren Sie Speicher/Zertifikate .

    Erstellen Sie einen JWT-Signaturschlüssel für GitHubJKS-Zertifikat

    Erstellen Sie einen JSON-Webtoken-Signaturschlüssel (JWT), der Ihrem zugewiesen werden soll GitHubJava-Schlüsselspeicherzertifikat.

    Vorbereitungen

    Erforderliche Rolle: administrator, sn_devops.admin

    Prozedur

    1. Navigieren zu Alle > System-OAuth > JWT-Schlüsselan.
    2. Wählen Sie Neu.
    3. Füllen Sie im Formular die Felder aus.
      Tabelle : 2. JWT-Schlüssel-Formularfelder
      Feld Beschreibung
      Name Name zur eindeutigen Identifizierung des JWT-Signaturschlüssels. Beispiel: JWT-Schlüssel für meine GitHub-App .
      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 zur Identifizierung des Schlüssels, der verwendet wird, wenn mehrere Schlüssel zum Signieren von Token verwendet werden.
      Signaturalgorithmus Algorithmus zum Signieren mit dem JWT-Schlüssel (Tipp: RSA 256).
      Signaturschlüssel-Passwort Passwort, das dem Signaturschlüssel zugeordnet ist (Hinweis: Das zuvor erstellte Quellschlüsselspeicher-Passwort).
      Aktiv Option zum Aktivieren des Schlüssels.
    4. Wählen Sie Absenden.

    Erstellen Sie einen JWT-Anbieter für Ihren GitHubSignaturschlüssel

    Fügen Sie Ihrem einen JSON-Webtoken-Anbieter (JWT) hinzu ServiceNowInstanz für GitHub.

    Vorbereitungen

    Erforderliche Rolle: administrator, sn_devops.admin

    Prozedur

    1. Navigieren zu Alle > System-OAuth > JWT-Anbieteran.
    2. Wählen Sie Neu.
    3. Füllen Sie im Formular die Felder aus.
      Tabelle : 3. Formularfelder des JWT-Anbieters
      Feld Beschreibung
      Name Name zur eindeutigen Identifizierung des JWT-Providers. Beispiel: Mein GitHub-App-JWT-Anbieter .
      Ablaufintervall (Sek.) Anzahl in Sekunden zum Festlegen der Lebensdauer von JWT-Provider-Token (Hinweis: Sie können sie als Standard belassen).
      Signierkonfiguration Gültiger JWT-Signaturschlüssel wurde zuvor erstellt. Beispiel: JWT-Schlüssel für meine GitHub-App .
    4. Klicken Sie mit der rechten Maustaste auf den Formularheader, und wählen Sie aus Speichern .
    5. Geben Sie ein GitHubApp App-ID (Verfügbar in Über Abschnitt von GitHubApp-Konfiguration in GitHub) Als Wert von iss Anspruch in der zugehörigen Liste „Standardansprüche“.
    6. Verlassen aud Und Untergeordnet Werte leer (Standard).

    Registrieren GitHubAls OAuth-Anbieter (JWT)

    Verwenden Sie die während generierten Informationen GitHubZu registrierende App-Account-Konfiguration GitHubAls OAuth-Anbieter und zulassen, dass die Instanz OAuth 2,0-Token anfordert.

    Vorbereitungen

    Erforderliche Rolle: administrator, sn_devops.admin

    Prozedur

    1. Navigieren zu Alle > System-OAuth > Applikationsregistrierungan.
    2. Wählen Sie Neu.
      Die Welche Art von OAuth-Anwendung? Nachricht wird angezeigt.
    3. Wählen Sie Aus Stellen Sie eine Verbindung zu einem externen OAuth-Anbieter her .
    4. Füllen Sie im Formular die Felder aus.
      Tabelle : 4. Formularfelder für Anwendungsregistrierung
      Feld Beschreibung
      Name Name zur eindeutigen Identifizierung des Datensatzes. Geben Sie beispielsweise ein Mein GitHub-App-Anbieter .
      Client-ID Client-ID von GitHubApp (Tipp: Verfügbar in Über Abschnitt von GitHubApp-Konfiguration in GitHub).
      Geheimer Clientschlüssel Geheimer Client von GitHubApp (Tipp: Verfügbar in Über Abschnitt von GitHubApp-Konfiguration in GitHub).
      OAuth-API-Skript Option, mit der Sie auf eine geänderte OAuthUtil-Skripteinbindung verweisen können. Wählen Sie Aus OAuthDevOpsGitHubJWTHandler .
      Standardgewährungstyp Typ der Gewährung, die der Anwendungsregistrierung zugeordnet ist. Wählen Sie Aus JWT-Bearer .
      Token-URL Der Speicherort 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_Token .

      Geben Sie für Enterprise-Version Folgendes ein: https://<HOST_URL>/api/v3/App/Installations/<installation_id>/Access_Token .

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

    5. Belassen Sie die restlichen Formularfelder als Standard.
      Anwendungsregistrierungsformular
    6. Klicken Sie mit der rechten Maustaste auf den Formularheader, und wählen Sie aus Speichern .
    7. Öffnen Sie das in erstellte Standardprofil OAuth-Entitätsprofile Zugehörige Liste.
    8. Füllen Sie aus JWT-Anbieter Feld mit dem zuvor erstellten JWT-Anbieter, und speichern Sie das Formular.
    9. Navigieren Sie zu Schlüsselverwaltung > Modulzugriffsrichtlinien > Alle .
    10. Wählen Sie die Richtlinie aus, die hat com_snc_platform_security_oauth_glideencrypter Als Krypto-Modul Feldwert und Skripteinbindung: OAuthDevOpsGitHubJWTHandler Als Zielskript Feldwert.
    11. Stellen Sie sicher, dass Ergebnis Feld ist auf festgelegt Nachverfolgen Und speichern Sie die Änderungen.
      Formular, das anzeigt, dass das Ergebnisfeld auf Nachverfolgung festgelegt ist.

    Erstellen Sie einen Anmeldeinformationsdatensatz für GitHubApp-Anbieter (JWT)

    Erstellen Sie einen Anmeldeinformationsdatensatz für GitHubApp-Anbieter wurde zuvor zum Autorisieren von Aktionen erstellt.

    Vorbereitungen

    Erforderliche Rolle: administrator, sn_devops.admin

    Prozedur

    1. Navigieren zu Alle > Verbindungen und Anmeldeinformationen > Anmeldeinformationenan.
    2. Wählen Sie Neu.
      Die Welche Art von Anmeldeinformationen möchten Sie erstellen? Nachricht wird angezeigt.
    3. Wählen Sie OAuth 2.0-Anmeldeinformationen aus.
    4. Füllen Sie im Formular die Felder aus.
      Tabelle : 5. Formularfelder für OAuth 2,0-Anmeldeinformationen
      Feld Wert erforderlich
      Name Name zur eindeutigen Identifizierung des Datensatzes. Geben Sie beispielsweise ein Meine GitHub-App-Anmeldeinformationen .
      Aktiv Option zum Aktivieren des Datensatzes.
      OAuth-Einheitenprofil Standardmäßiges OAuth-Entitätsprofil, das in der Anwendungsregistrierung erstellt wurde.
    5. Speichern Sie den Datensatz.
    6. Wählen Sie aus OAuth-Token abrufen Zugehöriger Link zum Generieren des OAuth-Tokens.