Vorteile der Migration von OAuth apps zu GitHub Apps
Es wird empfohlen, GitHub Apps für die Integration in GitHub zu verwenden. GitHub Apps bieten viele Vorteile gegenüber OAuth apps, einschließlich:
- verbesserte Sicherheitsfeatures, z. B. differenzierte Berechtigungen, Optionen für den Repositoryzugriff und kurzlebige Token
- die Möglichkeit, unabhängig von oder im Namen eines Benutzers oder einer Benutzerin zu handeln
- skalierbare Ratenlimits
- integrierte Webhooks
Weitere Informationen finden Sie unter Informationen zum Erstellen von GitHub-Apps.
Konvertieren einer OAuth app in eine GitHub App
Die folgenden Schritte stellen einen Überblick über die Migration von einer OAuth app zu einer GitHub App dar. Die genauen Schritte hängen von deiner App ab.
1. Überprüfen der OAuth app
Sieh dir den Code für deine OAuth app noch einmal genau an. Die API-Anforderungen, die deine OAuth app tätigt, helfen dir bei der Entscheidung, welche Berechtigungen für deine GitHub App ausgewählt werden sollten.
Darüber hinaus gibt es einige REST-API-Endpunkte, die für OAuth apps nicht verfügbar sind. Im Artikel Für GitHub-App-Installationszugriffstoken verfügbare Endpunkte findest du Informationen dazu, ob deine verwendeten REST-Endpunkte für GitHub Apps verfügbar sind.
2. Registrieren einer GitHub App
Registriere eine neue GitHub App. Weitere Informationen finden Sie unter Registrieren einer GitHub-App.
Im Vergleich zu einer OAuth app hast du bei einer GitHub App mehr Kontrolle über die Einstellungen. Weitere wichtige Vorteile sind:
-
Im Gegensatz zu einer OAuth app, der immer im Namen eines Benutzers oder einer Benutzerin handelt, kann eine GitHub App eigenständig oder im Namen eines Benutzers oder einer Benutzerin handeln. Wenn deine neue GitHub App nicht im Namen eines Benutzers oder einer Benutzerin handeln soll, kannst du die Einstellungen „Benutzer*innen identifizieren und autorisieren“ überspringen. Weitere Informationen finden Sie unter Informationen zur Authentifizierung mit einer GitHub-App.
-
Du kannst Webhooks verwenden, um deine GitHub App zu benachrichtigen, wenn bestimmte Ereignisse auftreten. Im Gegensatz zu Webhooks für OAuth apps, die du über die API für jedes Repository oder jede Organisation konfigurieren musst, sind Webhooks in GitHub Apps integriert. Wenn du deine GitHub App registrierst, kannst du die Webhookereignisse auswählen, die du empfangen möchtest. Wenn deine OAuth app derzeit mithilfe von Abrufen ermittelt, ob ein Ereignis aufgetreten ist, solltest du stattdessen Webhooks abonnieren, damit deine GitHub App innerhalb des Ratenlimits bleibt. Weitere Informationen finden Sie unter Verwenden von Webhooks mit GitHub-Apps.
-
Bei einer OAuth app werden Bereiche angefordert, wenn eine Benutzerin deine App autorisiert. Bei einer GitHub App gibst du Berechtigungen in den App-Einstellungen an. Diese Berechtigungen sind präziser als Bereiche und ermöglichen es dir, nur die Berechtigungen auszuwählen, die deine App benötigt. Darüber hinaus werden diese Berechtigungen REST-API-Endpunkten und Webhookereignissen zugeordnet, sodass du leicht bestimmen kannst, welche Berechtigungen deine GitHub App benötigt, um auf einen bestimmten REST-API-Endpunkt zuzugreifen oder einen bestimmten Webhook zu abonnieren. Die Berechtigungen für GraphQL-Anforderungen sind derzeit nicht dokumentiert. Weitere Informationen finden Sie unter Auswählen von Berechtigungen für eine GitHub-App.
3. Anpassen des Codes für deine App
Nachdem du eine GitHub App registriert hast, musst du den Code der alten OAuth app anpassen, damit diese mit der neuen GitHub App kompatibel ist.
Aktualisieren der Authentifizierung
Du musst den Code deiner App aktualisieren, um die API-Authentifizierung für deine GitHub App zu verarbeiten. Eine GitHub App kann sich auf drei Arten authentifizieren:
- Als App selbst, um Details zur GitHub App-Registrierung abzurufen oder zu ändern oder ein Installationszugriffstoken zu erstellen. Weitere Informationen finden Sie unter Authentifizieren als GitHub-App.
- Als App-Installation, um eigenständig Maßnahmen zu ergreifen. Weitere Informationen finden Sie unter Authentifizierung als GitHub-App-Installation.
- Im Namen eines Benutzers oder einer Benutzerin, um diesem oder dieser Aktionen zuzuordnen. Weitere Informationen finden Sie unter Authentifizieren mit einer GitHub-App im Namen von Benutzer*innen.
Wenn du die offizielle Octokit.js-Bibliothek von GitHub nutzt, kannst du das integrierte App
-Objekt zur Authentifizierung verwenden. Beispiele findest du unter Skripterstellung mit der REST-API und JavaScript und Erstellen einer GitHub-App, die auf Webhookereignisse reagiert.
Überprüfen der Ratenlimits
Überprüfe die Unterschiede der Ratenlimits zwischen OAuth apps und GitHub Apps. Für GitHub Apps werden Gleitregeln für Ratenlimits verwendet, die basierend auf der Anzahl der Repositorys und Benutzer*innen in der Organisation erhöht werden können. Weitere Informationen finden Sie unter Rate limits for GitHub Apps (Ratenbegrenzungen für GitHub-Apps).
Ziehe nach Möglichkeit die Verwendung bedingter Anforderungen und das Abonnieren von Webhooks anstelle von Abfragen in Betracht, damit die Ratenlimits nicht überschritten werden. Weitere Informationen zu bedingten Anforderungen findest du unter Bewährte Methoden für die Verwendung der REST-API. Weitere Informationen zum Verwenden von Webhooks mit deiner GitHub App findest du unter Verwenden von Webhooks mit GitHub-Apps und Erstellen einer GitHub-App, die auf Webhookereignisse reagiert.
Testen des Codes
Teste deine neue GitHub App, um dich zu vergewissern, dass der Code wie erwartet funktioniert.
4. Veröffentlichen der neuen GitHub App
Wenn die Verwendung der neuen GitHub App durch andere Konten möglich sein soll, muss deine App öffentlich sein. Damit deine GitHub App leichter gefunden werden kann, kannst du sie im GitHub Marketplace listen. Weitere Informationen findest du unter Informationen zu GitHub Marketplace für Apps und Öffentlich- oder Privatmachen einer GitHub-App.
5. Auffordern von Benutzer*innen zur Migration
Sobald deine neue GitHub App bereit ist, weise die Benutzerinnen der alten OAuth app an, zur neuen GitHub App zu migrieren. Es gibt keine Möglichkeit, die Benutzerinnen automatisch zu migrieren. Jeder Benutzerin muss die GitHub App selbst installieren und/oder autorisieren.
Als App-Besitzerin solltest du Handlungsaufrufe einrichten, um die Benutzerinnen dazu zu ermutigen, die neue GitHub App zu installieren und zu autorisieren und die Autorisierung für die alte OAuth app zu widerrufen. Auch die Dokumentation und Benutzeroberflächenelemente sollten entsprechend aktualisiert werden.
Auffordern der Benutzer*innen zur Installation der GitHub App
Wenn deine GitHub App eigenständig API-Anforderungen tätigen oder auf Organisations- oder Repositoryressourcen zugreifen soll, muss der oder die Benutzerin deine GitHub App installieren. Wenn eine Benutzerin eine GitHub App für ein Konto oder eine Organisation installiert, wählt dieser aus, auf welche Repositorys die App zugreifen kann, und erteilt der App die angeforderten Organisations- und Repositoryberechtigungen.
Um Benutzer*innen bei der Installation deiner GitHub App zu unterstützen, kannst du einen Link zur Website der App hinzufügen, den diese auswählen können, um die GitHub App zu installieren. Die Installations-URL hat folgendes Format: https://github.com/apps/YOUR_APP_NAME/installations/new
. Ersetze YOUR_APP_NAME
durch den Platzhalternamen deiner GitHub App. Diesen findest du im Feld „Öffentlicher Link“ auf der Einstellungsseite für deine GitHub App.
Um die Repositorys vorab auszuwählen, auf die deine OAuth app Zugriff hatte, kannst du /permissions
und Abfrageparameter an die Installations-URL anfügen. Dadurch können die Benutzer*innen der GitHub App leichter Zugriff auf die Repositorys erteilen, auf die deine OAuth app bereits Zugriff hatte. Die Abfrageparameter lauten:
suggested_target_id
: Die ID des Benutzers bzw. der Benutzerin oder der Organisation, die deine GitHub App installiert. Dieser Parameter ist erforderlich.repository_ids[]
: Die Repository-IDs, die für die Installation ausgewählt werden sollen. Wenn keine angegeben werden, werden alle Repositorys ausgewählt. Die maximale Anzahl von Repositorys, die vorab ausgewählt werden können, beträgt 100. Verwende die Endpunkte Repositorys für den authentifizierten Benutzer auflisten und Organisationsrepositorys auflisten, um eine Liste der Repositorys abzurufen, auf die deine OAuth app Zugriff hat.
Beispiel: https://github.com/apps/YOUR_APP_NAME/installations/new/permissions?suggested_target_id=ID_OF_USER_OR_ORG&repository_ids[]=REPO_A_ID&repository_ids[]=REPO_B_ID
Weitere Informationen zum Installieren von GitHub Apps findest du unter Installieren einer GitHub-App aus dem GitHub Marketplace für dein persönliches Konto, Installieren einer GitHub-App aus dem GitHub Marketplace für deine Organisationen, Installieren einer GitHub-App von einem Drittanbieter und Installieren einer eigenen GitHub-App.
Auffordern von Benutzer*innen zur Autorisierung der App
Wenn deine GitHub App API-Anforderungen im Namen eines Benutzers oder einer Benutzerin tätigen sollen, muss der oder die Benutzerin die App autorisieren. Wenn Benutzerinnen eine App autorisieren, gewähren sie der App die Berechtigung, in ihrem Namen zu handeln, sowie die von der App angeforderten Kontoberechtigungen. Wenn die App in einem Organisationskonto installiert ist, muss jeder Benutzerin innerhalb dieser Organisation die App autorisieren, damit die App in dessen oder deren Namen handeln kann.
Führe die Benutzer*innen durch den Webanwendungs- oder Geräteablauf zur Autorisierung deiner App. Weitere Informationen finden Sie unter Generieren eines Benutzerzugriffstokens für eine GitHub-App.
Weitere Informationen zum Autorisieren von GitHub Apps findest du unter Autorisieren von GitHub-Apps.
Auffordern von Benutzer*innen zum Widerrufen der Zugriffsberechtigungen von OAuth app
Du solltest deinen Benutzerinnen empfehlen, die Zugriffsberechtigungen der alten OAuth app zu widerrufen. Dadurch wird ein vollständiger Umstieg von der OAuth app erreicht, und die Daten der Benutzerinnen bleiben geschützt. Weitere Informationen finden Sie unter Überprüfen der autorisierten OAuth-Apps.
Aktualisieren von Benutzeroberflächen oder Dokumentationen
Du solltest alle Benutzeroberflächen oder Dokumentationen im Zusammenhang mit deiner App aktualisieren, um die Änderung von OAuth app in GitHub App widerzuspiegeln.
6. Entfernen der Webhooks für die alte OAuth app
Wenn eine Benutzerin deine GitHub App installiert und Zugriff auf ein Repository gewährt, solltest du alle Webhooks für die alte OAuth app entfernen. Andernfalls reagieren deine neue GitHub App und deine alte OAuth app auf Webhooks für dasselbe Ereignis.
Um Repositorywebhooks zu entfernen, kannst du dem installation_repositories
-Webhook mit der added
-Aktion lauschen. Wenn deine GitHub App dieses Ereignis empfängt, kannst du die REST-API verwenden, um den Webhook für diese Repositorys für deine OAuth app zu löschen. Weitere Informationen findest du unter Webhook-Ereignisse und -Nutzlasten und REST-API-Endpunkte für Repository-Webhooks.
Um Organisationswebhooks zu entfernen, kannst du dem installation
-Webhook mit der created
-Aktion lauschen. Wenn deine GitHub App dieses Ereignis für eine Organisation empfängt, kannst du die REST-API verwenden, um den Webhook für diese Organisation und die zugehörigen Repositorys für deine OAuth app zu löschen. Weitere Informationen findest du unter Webhook-Ereignisse und -Nutzlasten, REST-API-Endpunkte für Organisationswebhooks und REST-API-Endpunkte für Repository-Webhooks.
7. Löschen der alten OAuth app
Nachdem deine Benutzer*innen zur neuen GitHub App migriert sind, solltest du die alte OAuth app löschen. Dadurch wird der Missbrauch der Anmeldeinformationen für die OAuth app vermieden. Außerdem werden alle verbleibenden Autorisierungen der OAuth app widerrufen. Weitere Informationen finden Sie unter Löschen einer OAuth-App. Wenn deine OAuth app auf GitHub Marketplace gelistet ist, musst du dich möglicherweise an den GitHub-Support wenden, um deine App zuerst aus dem Marketplace zu entfernen.