Skip to main content

Unterschiede zwischen GitHub-Apps und OAuth-Apps

Im Allgemeinen werden GitHub Apps OAuth apps vorgezogen, da sie differenzierte Berechtigungen verwenden, mehr Kontrolle darüber bieten, auf welche Repositorys die App zugreifen kann, und weil sie kurzlebige Token verwenden.

Informationen zu GitHub Apps und OAuth apps

Im Allgemeinen werden GitHub Apps häufiger als OAuth apps verwendet. GitHub Apps verwenden differenzierte Berechtigungen, bieten Benutzer*innen mehr Kontrolle darüber, auf welche Repositorys die App zugreifen kann, und verwenden 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 können GitHub Apps weiterhin OAuth 2.0 nutzen und eine Art von OAuth-Token (ein sogenanntes Benutzerzugriffstoken) generieren und Aktionen im Namen eines Benutzers bzw. einer Benutzerin ausführen. Jedoch können GitHub Apps unabhängig von demder Benutzerin agieren. 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, zentralisierte Webhooks. GitHub Apps können Webhookereignisse für alle Repositorys und Organisationen empfangen, auf die die App zugreifen kann. Umgekehrt müssen OAuth apps Webhooks einzeln für jedes Repository und jede Organisation konfigurieren.

Das Ratenlimit für GitHub Apps, die ein Installationszugriffstoken verwenden, wird mit der Anzahl der Repositorys und der Anzahl der Organisationsbenutzer skaliert. Umgekehrt weisen OAuth apps niedrigere Ratenlimits auf und sind nicht skalierbar.

In einem Fall wird eine OAuth app einer GitHub App vorgezogen. Wenn deine App auf Ressourcen auf Unternehmensebene (etwa das Unternehmensobjekt selbst) zugreifen muss, solltest du eine OAuth app verwenden, da einer GitHub App noch keine Berechtigungen für ein Unternehmen erteilt werden können. GitHub Apps können weiterhin auf unternehmenseigene Organisations- und Repositoryressourcen zugreifen.

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

Weitere Informationen zum Migrieren einer vorhandenen OAuth app zu einer GitHub App findest du unter Migrieren von OAuth-Apps zu GitHub-Apps.

Wer kann GitHub-Apps installieren und OAuth apps autorisieren?

Du kannst GitHub-Apps in deinem persönlichen Konto oder in Organisationen installieren, deren Besitzerin du bist. Wenn du über Administratorberechtigungen in einem Repository verfügst, kannst du GitHub-Apps in Organisationskonten installieren. Wenn eine GitHub-App in einem Repository installiert wird und Organisationsberechtigungen erforderlich sind, muss die bzw. der Organisationsbesitzerin 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-Manager*innen in deiner Organisation finden Sie unter „Rollen in einer Organisation.“

Im Gegensatz dazu werden OAuth apps von Benutzerinnen autorisiert. Dadurch kann die App als authentifizierter Benutzerin agieren. Du kannst beispielsweise eine OAuth app autorisieren, mit der alle Benachrichtigungen für die oder den authentifizierten Benutzer*in ermittelt werden. Du kannst Berechtigungen für eine OAuth app jederzeit widerrufen.

Organisationsbesitzer können auswählen, ob externe Mitarbeiter Zugriff auf nicht genehmigte OAuth apps und GitHub Apps anfordern können. Weitere Informationen findest du unter Beschränken von Zugriffsanforderungen durch OAuth- und GitHub-Apps.

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
Du musst Organisationsbesitzerin 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 wird und Organisationsberechtigungen erforderlich sind, muss die bzw. der Organisationsbesitzerin die Anwendung genehmigen.Du kannst eine OAuth app für den Zugriff auf Ressourcen autorisieren.
Eine GitHub-App kann in deinem persönlichen Repository installiert werden.Du kannst eine OAuth app für den 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.
Du musst Organisationsbesitzer*in sein oder über Administratorberechtigungen in einem Repository verfügen, um die Installation einer GitHub-App anzufordern.Ist eine Organisationsanwendungsrichtlinie aktiv, können alle Organisationsmitglieder die Installation einer OAuth app in einer Organisation anfordern. Die oder der Organisationsbesitzer*in muss die Anforderung genehmigen oder ablehnen.

Worauf können GitHub-Apps und OAuth apps zugreifen?

Kontobesitzer*innen können eine GitHub App in einem Konto verwenden, ohne Zugriff auf weitere Ressourcen 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. Wenn die Person, die eine GitHub-App eingerichtet hat, die Organisation verlässt, bleibt die App installiert.

Eine autorisierte OAuth app hat Zugriff auf alle Ressourcen, auf die eine Benutzerin oder Organisationsbesitzer*in zugreifen kann.

GitHub AppsOAuth apps
Durch die Installation einer GitHub-App erhält die App Zugriff auf die ausgewählten Repositorys eines Benutzer- oder Organisationskontos.Durch die Autorisierung wird einer OAuth app Zugriff auf die zugänglichen Ressourcen des Benutzers bzw. der Benutzerin gewährt. Beispielsweise auf die Repositorys, auf die sie zugreifen können.
Das Installationstoken aus einer GitHub-App verliert den Zugriff auf Ressourcen, wenn eine Administratorin 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 Issues und Pull Requests anfordern, ohne auf den tatsächlichen Inhalt des Repositorys zuzugreifen.OAuth apps müssen den repo-Bereich anfordern, um Zugriff auf Issues, Pull Requests oder Ressourcen zu erhalten, die sich im Besitz des Repositorys befinden.
GitHub-Apps unterliegen nicht den Anwendungsrichtlinien der Organisation. Eine GitHub-App hat nur Zugriff auf die Repositorys, die ein Organisationsbesitzer gewährt hat.Wenn eine Anwendungsrichtlinie einer Organisation aktiv ist, kann die Installation einer OAuth app nur durch einen Organisationsbesitzerin autorisiert werden. Wenn die OAuth app installiert ist, erhält sie Zugriff auf alles, was für das Token sichtbar ist, über das derdie Organisationsbesitzerin innerhalb der genehmigten Organisation verfügt.
Eine GitHub-App empfängt ein Webhookereignis, 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.Abhängig davon, wie sich der Zugriff der gewährenden Benutzer*innen ändert, können OAuth apps den Zugriff auf eine Organisation oder ein Repository jederzeit verlieren. Die OAuth app informiert dich nicht, wenn sie Zugriff auf eine Ressource verliert.

Tokenbasierte Identifizierung

Hinweis: GitHub-Apps können auch ein benutzerbasiertes Token verwenden. Weitere Informationen findest du unter Authentifizieren mit einer GitHub-App im Namen von Benutzer*innen.

GitHub AppsOAuth apps
Eine GitHub-App kann out-of-band mithilfe eines privaten Schlüssels mit einem JSON-Webtokenformat ein Installationszugriffstoken anfordern.Eine OAuth app kann ein Anforderungstoken nach einer Umleitung über eine Webanforderung gegen ein Zugriffstoken tauschen.
Mit einem Installationstoken wird die App als GitHub-Apps-Bot identifiziert (z. B. @jenkins-bot).Mit einem Zugriffstoken wird die App als diejenige oder derjenige Benutzer*in identifiziert, die bzw. der das Token für die App gewährt hat (z. B. @octocat).
Installationszugriffstoken laufen nach einer vordefinierten Zeit ab (derzeit nach 1 Stunde).OAuth-Token bleiben aktiv, bis sie vom Kunden widerrufen werden.
Für GitHub Apps, die in Organisationen oder Repositorys installiert sind, gelten die Ratenlimits, die sich mit der Anzahl der Installationen erhöhen. Weitere Informationen findest du unter Rate limits for GitHub Apps (Ratenbegrenzungen für GitHub-Apps).OAuth-Token verwenden die Ratebegrenzung des Benutzers von 5.000 Anforderungen pro Stunde.
Die Ratenbegrenzung kann sowohl auf Ebene der GitHub-Apps (für alle Installationen) als auch auf Ebene der einzelnen Installationen erhöht werden.Ratenbegrenzungserhöhungen werden pro OAuth app gewährt. Die Erhöhung gilt für jedes Token, das für diese OAuth app ausgestellt wird.
GitHub Apps können sich im Namen der Benutzerin oder des Benutzers authentifizieren. Der Autorisierungsflow entspricht dem Autorisierungsflow der OAuth app. Benutzerzugriffstoken können ablaufen und mit einem Aktualisierungstoken verlängert werden. Weitere Informationen findest du unter Aktualisieren von Benutzerzugriffstoken und unter Authentifizieren mit einer GitHub-App im Namen von Benutzer*innen.Beim von OAuth apps verwendeten OAuth-Flow wird eine OAuth app im Namen der Benutzerin bzw. des Benutzers autorisiert. Dies ist derselbe Flow, der zum Generieren eines Benutzerzugriffstoken für eine GitHub App verwendet wird.

Anfordern von Berechtigungsstufen für Ressourcen

Im Gegensatz zu OAuth apps verfügen GitHub-Apps über gezielte Berechtigungen, mit denen sie lediglich Zugriff auf Ressourcen anfordern können, die sie benötigen. Beispielsweise kann eine GitHub-App für Continuous Integration (CI) Lesezugriff auf Repositoryinhalte und Schreibzugriff auf die Status-API anfordern. Eine andere GitHub-App kann keinen Lese- oder Schreibzugriff auf Code haben, aber trotzdem Issues, Bezeichnungen und Meilensteine verwalten können. OAuth apps können keine präzisen Berechtigungen verwenden.

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

Repositoryermittlung

GitHub AppsOAuth apps
GitHub-Apps können anhand von /installation/repositories ermitteln, auf welche Repositorys die Installation zugreifen kann.OAuth apps erhalten anhand von /user/repos eine Benutzeransicht und anhand von /orgs/:org/repos eine Organisationsansicht mit Informationen zu den Repositorys, auf die zugegriffen werden kann.
GitHub-Apps empfangen Webhooks, wenn Repositorys hinzugefügt oder aus der Installation entfernt werden.OAuth apps erstellen 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. Dieser empfängt die konfigurierten Ereignisse für alle Repositorys, auf die er zugreifen kann.OAuth apps fordern den Webhookbereich an, um einen Repositorywebhook für jedes Repository zu erstellen, von dem sie Ereignisse empfangen müssen.
GitHub-Apps empfangen bestimmte Ereignisse auf Organisationsebene mit der Berechtigung des Organisationsmitglieds.OAuth apps fordern 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 das Zugriffstoken einer OAuth app 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 fordern den Bereich write:public_key an und nutzen die API zum Erstellen eines Bereitstellungsschlüssels. 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

Computerbenutzerkonten sind OAuth-basierte persönliche Konten, die automatisierte Systeme mithilfe des GitHub-Benutzersystems trennen.

Botkonten sind ein spezifisches Element von GitHub-Apps und in jede GitHub-App integriert.

GitHub AppsOAuth apps
Für GitHub-App-Bots wird kein GitHub Enterprise-Arbeitsplatz verwendet.Für Computerbenutzerkonten wird ein GitHub Enterprise-Arbeitsplatz verwendet.
Da einem GitHub-App-Bot niemals ein Kennwort zugewiesen wird, können Kunden sich nicht direkt bei dem Bot anmelden.Computerbenutzerkonten werden Benutzernamen und Kennwörter zugewiesen, die vom Kunden verwaltet und geschützt werden.