Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

Unterschiede zwischen GitHub-Apps und OAuth-Apps

Das Verständnis der Unterschiede zwischen GitHub Apps und OAuth Apps hilft dir dabei, zu entscheiden, welche App du erstellen möchtest. Eine OAuth App fungiert als GitHub-Benutzer*in, während eine GitHub App eine eigene Identität verwendet, wenn sie in einer Organisation oder in Repositorys innerhalb einer Organisation installiert ist.

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-Managern in deiner Organisation findest du unter GitHub App-Manager.

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. Die Berechtigungen einer OAuth-App können immer widerrufen werden.

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 im Vergleich
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 autorisieren, um Zugriff auf Ressourcen zu erhalten.
Eine GitHub-App kann in deinem persönlichen Repository installiert werden.Du kannst eine OAuth-App autorisieren, um Zugriff auf Ressourcen zu erhalten.
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 oder ein Benutzerin oder Organisationsbesitzerin zugreifen kann.

GitHub AppsOAuth-Apps im Vergleich
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 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, deren Besitzer das Repository ist.
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 Organisationsbesitzer autorisiert werden. Wenn die OAuth-App installiert ist, erhält sie 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 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 Identifying and authorizing users for GitHub Apps („Identifizieren und Autorisieren von Benutzer*innen für GitHub-Apps“).

GitHub AppsOAuth-Apps im Vergleich
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).
Installationstoken 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 für Server-zu-Server-Anforderungen. Weitere Informationen findest du unter Rate limits for GitHub Apps („Ratenlimits für GitHub-Apps“).Für OAuth-Token gilt das Benutzerratenlimit 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.Die Ratenbegrenzung wird pro OAuth-App erweitert. Jedes Token, das der jeweiligen OAuth-App zugewiesen wird, verfügt über das erhöhte Limit.
GitHub Apps können sich im Namen der Benutzerin oder des Benutzers authentifizieren. Dies wird als Benutzer-zu-Server-Anforderung bezeichnet. Der Autorisierungsflow entspricht dem Autorisierungsflow bei OAuth-Apps. Benutzer-zu-Server-Token können ablaufen und mit einem Aktualisierungstoken verlängert werden. Weitere Informationen findest du unter Refreshing user-to-server access tokens („Aktualisieren von Benutzer-zu-Server-Zugriffstoken“) und Identifying and authorizing users for GitHub Apps („Identifizieren und Autorisieren von Benutzer*innen für GitHub-Apps“).Beim von OAuth Apps verwendeten OAuth-Flow wird eine OAuth App im Namen der Benutzerin bzw. des Benutzers autorisiert. Dies ist derselbe Flow, der bei der Benutzer-zu-Server-Autorisierung der 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 im Vergleich
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 im Vergleich
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 im Vergleich
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 im Vergleich
GitHub-Apps fordern die Berechtigung für Repositoryinhalte an und verwenden dein Installationstoken für die Authentifizierung über HTTP-basierten Git-Zugriff.OAuth-Apps fordern über die API den Geltungsbereich für write:public_key an und erstellen einen Bereitstellungsschlüssel. 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 im Vergleich
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.