Skip to main content

Unterschiede zwischen GitHub Apps und OAuth-Apps

Im Allgemeinen werden GitHub Apps gegenüber OAuth apps bevorzugt, da sie feingranulare Berechtigungen verwenden, eine genauere Kontrolle darüber ermöglichen, auf welche Repositorien die App zugreifen kann, und kurzlebige Token verwenden.

Über GitHub Apps und OAuth apps

Im Allgemeinen werden GitHub Apps gegenüber OAuth apps bevorzugt. GitHub Apps Verwenden Sie differenzierte Berechtigungen, geben Sie dem Benutzer mehr Kontrolle darüber, auf welche Repositorys die App zugreifen kann, und verwenden Sie kurzlebige Token. Diese Eigenschaften können die Sicherheit der App erhöhen, indem sie den Schaden begrenzen, der verursacht werden könnte, wenn die Anmeldeinformationen der App geleakt wurden.

Ähnlich wie OAuth apps kann GitHub Apps weiterhin OAuth 2.0 verwenden, eine Art von OAuth-Token (ein sogenanntes Benutzerzugriffstoken) generieren und Aktionen im Namen eines Benutzers ausführen. GitHub Apps Kann jedoch auch unabhängig von einem Benutzer handeln. Dies ist von Vorteil für Automatisierungen, die keine Benutzereingabe erfordern. Die App funktioniert auch dann weiterhin, wenn die Person, die sie in der Organisation installiert hat, die Organisation verlässt.

GitHub Apps verfügen über integrierte, zentrale Webhooks. GitHub Apps kann Webhook-Ereignisse für alle Repositorys und Organisationen empfangen, auf die die App zugreifen kann. OAuth apps Umgekehrt müssen Webhooks für jedes Repository und jede Organisation einzeln konfiguriert werden.

Das Ratenlimit für GitHub Apps bei Verwendung eines Installationszugriffstokens skaliert mit der Anzahl der Repositories und der Anzahl der Organisationsbenutzer. Umgekehrt haben OAuth apps niedrigere Ratenlimits und skalieren nicht.

Es gibt einen Fall, in dem ein OAuth app einem GitHub App vorgezogen wird. Wenn Ihre App auf Ressourcen auf Unternehmensebene zugreifen muss, z. B. auf das Enterprise-Objekt selbst, sollten Sie ein OAuth app verwenden, da einem GitHub App noch keine Berechtigungen für ein Unternehmen erteilt werden können. GitHub Apps kann weiterhin auf Unternehmens- und Repositoryressourcen zugreifen.

Weitere Informationen zu GitHub Apps findest du unter Informationen zum Erstellen von GitHub Apps.

Weitere Informationen zur Migration eines vorhandenen OAuth app zu einem GitHub App finden Sie unter Migrieren von OAuth-Apps zu GitHub Apps.

Wer kann GitHub Apps installieren und autorisierenOAuth apps?

Sie können GitHub Apps in Ihrem persönlichen Konto oder in Organisationen installieren, die Sie besitzen. Wenn Sie über Administratorberechtigungen in einem Repository verfügen, können Sie GitHub Apps auf Organisationskonten installieren. Wenn eine GitHub App in einem Repository installiert ist und Organisationsberechtigungen erfordert, muss der Organisationsbesitzer die Anwendung genehmigen.

Standardmäßig können die Einstellungen von GitHub Apps in einer Organisation nur von Organisationsbesitzern verwaltet werden. Um weiteren Benutzern das Ändern der Entwicklereinstellungen von GitHub Apps im Besitz der Organisation zu erlauben, kann ein Benutzer Berechtigungen als GitHub App-Manager erteilen. GitHub App-Manager können keine Drittanbieteranwendungen verwalten. Weitere Informationen zum Hinzufügen und Entfernen von GitHub App-Managern in deiner Organisation findest du unter Rollen in einer Organisation.

Im Gegensatz dazu autorisieren OAuth appsBenutzer, die der App die Möglichkeit geben, als authentifizierter Benutzer zu fungieren. Sie können z. B. eine OAuth app Person autorisieren, die alle Benachrichtigungen für den authentifizierten Benutzer findet. Sie können Berechtigungen für ein OAuth app jederzeit widerrufen.

Organisationsbesitzer können auswählen, ob externe Mitarbeiter den Zugriff auf nicht genehmigte und nicht genehmigte OAuth apps Mitarbeiter GitHub Appsanfordern können. Weitere Informationen finden Sie unter Einschränken von OAuth-App- und GitHub App-Zugriffsanforderungen und -installationen.

Warnung

Durch das Widerrufen aller Berechtigungen einer OAuth app werden alle SSH-Schlüssel gelöscht, die die Anwendung im Namen des Benutzers generiert hat, einschließlich der Bereitstellungsschlüssel.

GitHub-AppsOAuth apps
Sie müssen ein Organisationsbesitzer sein oder über Administratorberechtigungen in einem Repository verfügen, um eine GitHub App in einer Organisation zu installieren. Wenn eine GitHub App in einem Repository installiert ist und Organisationsberechtigungen erfordert, muss der Organisationsbesitzer die Anwendung genehmigen.Sie können eine(n) OAuth app autorisieren, auf Ressourcen zuzugreifen.
Sie können eine GitHub App in Ihrem persönlichen Repository installieren.Sie können einen OAuth app Zugriff auf Ressourcen autorisieren.
Du musst Organisationsbesitzerin oder Besitzerin eines persönlichen Repositorys sein bzw. über Administratorberechtigungen in einem Repository verfügen, um eine GitHub-App zu deinstallieren und den Zugriff zu entfernen.Du kannst ein OAuth-Zugriffstoken löschen, um den Zugriff zu entfernen.
Sie müssen ein Organisationsbesitzer sein oder über Administratorberechtigungen in einem Repository verfügen, um eine GitHub App-Installation anzufordern.Wenn eine Richtlinie für Organisationsanwendungen aktiv ist, kann jedes Mitglied der Organisation die Installation einer OAuth app für eine Organisation anfordern. Die oder der Organisationsbesitzer*in muss die Anforderung genehmigen oder ablehnen.

Worauf können GitHub Apps und OAuth apps zugreifen?

Kontobesitzer können ein GitHub App innerhalb eines Kontos verwenden, ohne einem anderen Konto Zugriff zu gewähren. Du kannst beispielsweise den Builddienst eines Drittanbieters in der Organisation deines Arbeitgebers installieren, diesem Builddienst jedoch keinen Zugriff auf Repositorys in deinem persönlichen Konto gewähren. Eine GitHub App bleibt installiert, wenn die Person, die sie eingerichtet hat, die Organisation verlässt.

Ein _autorisierter_OAuth app Benutzer hat Zugriff auf alle barrierefreien Ressourcen des Benutzers oder der Organisation.

GitHub-AppsOAuth apps
Durch die Installation einer GitHub App erhält die App Zugriff auf die ausgewählten Repositorys eines Benutzer- oder Organisationskontos.Die Autorisierung einer OAuth app App gewährt der App Zugriff auf die barrierefreien Ressourcen des Benutzers. Beispielsweise Repositories, auf die sie zugreifen können.
Das Installationstoken aus einer GitHub App verliert den Zugriff auf Ressourcen, wenn ein Administrator Repositorys aus der Installation entfernt.Ein OAuth-Zugriffstoken verliert den Zugriff auf Ressourcen, wenn die oder der Benutzer*in den Zugriff verliert (wenn z. B. ihr oder sein Schreibzugriff auf ein Repository entfernt wird).
Die Zugriffstoken für die Installation werden mit den vom Ersteller der Anwendung gewählten Berechtigungen auf bestimmte Repositorys beschränkt.Ein OAuth-Zugriffstoken wird über Geltungsbereiche beschränkt.
GitHub Apps können separaten Zugriff auf Probleme und Pullanforderungen anfordern, ohne auf den tatsächlichen Inhalt des Repositorys zuzugreifen.
OAuth apps müssen den repo Berechtigungsbereich anfordern, um Zugriff auf Issues, Pull Requests oder alles, was dem Repository gehört, zu erhalten.
GitHub Apps unterliegen nicht organisationsspezifischen Anwendungsrichtlinien. Eine GitHub App hat nur Zugriff auf die Repositorys, die ein Organisationsbesitzer gewährt hat.Wenn eine Anwendungsrichtlinie der Organisation aktiv ist, kann nur ein Organisationsbesitzer die Installation eines OAuth app genehmigen. Falls installiert, erhält OAuth app Zugriff auf alles, was für das Token sichtbar ist, über das der Organisationsbesitzer innerhalb der genehmigten Organisation verfügt.
Eine GitHub App empfängt ein Webhook-Ereignis, wenn eine Installation geändert oder entfernt wird. Dadurch wird die oder der App-Ersteller*in informiert, wenn sie oder er mehr oder weniger Zugriff auf die Ressourcen einer Organisation erhalten hat.
OAuth apps kann jederzeit den Zugriff auf eine Organisation oder ein Repository verlieren, abhängig von den sich ändernden Zugriffsrechten des Benutzers, der den Zugriff gewährt hat. Das OAuth app wird Sie nicht informieren, wenn es den Zugriff auf eine Ressource verliert.

Tokenbasierte Identifizierung

Hinweis

GitHub Apps können auch ein benutzerbasiertes Token verwenden. Weitere Informationen finden Sie unter Authentifizieren mit einer GitHub App im Namen eines Benutzers.

GitHub-AppsOAuth apps
Eine GitHub-App kann ein Installationszugriffstoken anfordern, indem ein privater Schlüssel mit einem JSON-Webtokenformat außerhalb des Bandformats verwendet wird.Eine OAuth app erfordert eine interaktive Authentifizierung durch einen Benutzer, um ein Benutzerzugriffstoken zu erhalten.
Ein Installations-Token identifiziert die App als ein GitHub AppBot-Konto, z. B. @jenkins[bot].Ein Benutzerzugriffstoken identifiziert die App als den Benutzer, der sich bei der App angemeldet hat, z. B. @octocat.
Installationszugriffstoken laufen nach einer vordefinierten Zeit ab (derzeit nach 1 Stunde).
OAuth-App-Token werden standardmäßig dauerhaft beibehalten. Sie können auch Ihr OAuth app für die Verwendung von Benutzerzugriffstoken konfigurieren, die nach acht Stunden ablaufen und mit einem Refresh-Token erneuert werden können. Weitere Informationen finden Sie unter Autorisieren von OAuth-Apps.
GitHub Apps die in Organisationen oder Repositorys installiert sind, unterliegen Ratenbeschränkungen, die mit der Anzahl der Benutzer und Repositorys in einem Konto skaliert werden. Weitere Informationen finden Sie unter Preisbeschränkungen für GitHub Apps.OAuth-Token verwenden die Ratebegrenzung des Benutzers von 5.000 Anforderungen pro Stunde.
Zinslimiterhöhungen können sowohl auf GitHub-App-Ebene (auswirkungen auf alle Installationen) als auch auf einzelner Installationsebene gewährt werden.Erhöhungen des Ratenlimits werden pro OAuth app gewährt. Jedes Token, das diesem OAuth app gewährt wird, erhält das erhöhte Limit.
GitHub Apps kann sich im Namen des Benutzers authentifizieren. Der zu autorisierende Fluss ist identisch mit dem OAuth app Autorisierungsfluss. Benutzerzugriffstoken können ablaufen und mit einem Aktualisierungstoken verlängert werden. Weitere Informationen findest du unter Aktualisieren von Benutzerzugriffstoken und Authentifizieren mit einer GitHub App im Namen eines Benutzers.Der von OAuth apps verwendete OAuth-Fluss autorisiert ein OAuth app im Namen des Benutzers. Dies ist derselbe Fluss, der zum Generieren eines GitHub App Benutzerzugriffstokens verwendet wird.

Anfordern von Berechtigungsstufen für Ressourcen

Im Gegensatz dazu OAuth appsverfügen GitHub Apps über gezielte Berechtigungen, mit denen sie nur Zugriff auf die benötigten Elemente anfordern können. Beispielsweise kann eine CI (Continuous Integration) GitHub App Lesezugriff auf Repositoryinhalte und Schreibzugriff auf die Status-API anfordern. Eine andere GitHub App kann keinen Lese- oder Schreibzugriff auf Code haben, aber dennoch die Möglichkeit haben, Probleme, Bezeichnungen und Meilensteine zu verwalten. OAuth apps kann keine granularen Berechtigungen verwenden.

ZugriffGitHub Apps (berechtigungen read oder write)OAuth apps
Für Zugriff auf öffentliche RepositorysDas öffentliche Repository muss während der Installation ausgewählt werden.
public_repo Bereich.
Für Zugriff auf Repositorycode/-inhalteRepository-Inhalt
repo Bereich.
Für Zugriff auf Issues, Labels und MeilensteineProbleme
repo Bereich.
Zum Zugriff auf Pull Requests, Labels und MeilensteinePull Requests
repo Bereich.
Für Zugriff auf Commitstatus (für CI-Builds)Commitstatus
repo:status Bereich.
Für Zugriff auf Bereitstellungen und BereitstellungsstatusBereitstellungen
repo_deployment Bereich.
Für den Empfang von Ereignissen über einen WebhookEine GitHub App enthält standardmäßig einen Webhook.Der write:repo_hook- oder write:org_hook-Bereich.

Repository-Erkennung

GitHub-AppsOAuth apps
GitHub Apps können /installation/repositories nutzen, um zu sehen, auf welche Repositorys die Installation zugreifen kann.
OAuth apps kann /user/repos für eine Benutzeransicht oder /orgs/:org/repos für eine Organisationsansicht zugänglicher Repositorys anzeigen.
GitHub Apps erhalten Webhooks, wenn Repositorys hinzugefügt oder aus der Installation entfernt werden.
OAuth apps Erstellen Sie Organisationswebhooks für Benachrichtigungen, wenn ein neues Repository innerhalb einer Organisation erstellt wird.

webhooks

GitHub-AppsOAuth apps
Standardmäßig verfügen GitHub Apps über einen einzelnen Webhook, der die Ereignisse empfängt, auf die sie für jedes Repository konfiguriert sind, auf das sie Zugriff haben.
OAuth apps fordern Sie den Webhook-Bereich an, um einen Repository-Webhook für jedes Repository zu erstellen, von dem sie Ereignisse empfangen müssen.
GitHub-Apps erhalten mit der Erlaubnis eines Organisationsmitglieds bestimmte Ereignisse auf Organisationsebene.
OAuth apps fordern Sie den Webhookbereich der Organisation an, um einen Organisationswebhook für jede Organisation zu erstellen, von der sie Ereignisse auf Organisationsebene empfangen müssen.
Webhooks werden automatisch deaktiviert, wenn die GitHub App deinstalliert wird.Webhooks werden nicht automatisch deaktiviert, wenn ein OAuth appZugriffstoken gelöscht wird, und es gibt keine Möglichkeit, sie automatisch zu bereinigen. Du musst die Benutzer*innen bitten, dies manuell zu tun.

Git-Zugriff

GitHub-AppsOAuth apps
GitHub-Apps fordern die Berechtigung für Repositoryinhalte an und verwenden dein Installationszugriffstoken für die Authentifizierung über HTTP-basierten Git-Zugriff. Weitere Informationen findest du unter Generieren eines Installationszugriffstokens für eine GitHub App.
OAuth apps
write:public_key fragen Sie nach Bereich und Erstellen eines Bereitstellungsschlüssels über die API. Diesen Schlüssel kannst du dann zum Ausführen von Git-Befehlen verwenden.
Das Token wird als HTTP-Kennwort verwendet.Das Token wird als HTTP-Benutzername verwendet.

Computer- und Botkonten im Vergleich

Maschinenbenutzerkonten sind personenbezogene Konten, die automatisierte Systeme innerhalb des Benutzersystems von GitHub voneinander trennen und mit GitHub über PATs oder OAuth app-Token interagieren.

Bot-Konten sind spezifisch für GitHub Apps und sind in jede GitHub App integriert.

GitHub-AppsOAuth apps
GitHub App-Bots belegen GitHub Enterprise.Ein Maschinenbenutzerkonto belegt einen GitHub Enterpriseplatz.
Da einem GitHub App-Bot niemals ein Kennwort gewährt wird, kann sich ein Kunde nicht direkt anmelden.Computerbenutzerkonten werden Benutzernamen und Kennwörter zugewiesen, die vom Kunden verwaltet und geschützt werden.