Verwendung der OAuth-Authentifizierung mit DigitalOcean als Benutzer oder Entwickler

Einführung

Version 2 der DigitalOcean-API enthält viele Änderungen, die das Benutzererlebnis für alle verbessern. Eine der wichtigsten neuen Funktionen ist die OAuth-Authentifizierung für Benutzer und Anwendungen.

Mit dem OAuth-System können Sie sich mit der API bei Ihrem Konto authentifizieren. Dieser Zugriff kann in Form von persönlichen Zugriffstoken für unkomplizierte Anwendungsfälle gewährt werden, bietet jedoch auch die Flexibilität, Anwendungen den Zugriff auf Ihr Konto zu ermöglichen.

In diesem Handbuch wird erläutert, wie Sie einer Anwendung den Zugriff auf Ihr Konto gewähren oder entziehen können. Wir werden auch die andere Seite der Interaktion besprechen, indem wir erklären, wie Sie Anwendungen registrieren, die die API bei DigitalOcean nutzen. Auf diese Weise können Sie OAuth verwenden, um den Zugriff auf die Konten Ihrer Benutzer anzufordern.

Autorisieren von Anwendungen zur Verwendung Ihres Kontos als Benutzer

Wenn Sie lediglich Interesse daran haben, Anwendungen Zugriff auf Ihr Konto zu gewähren, können Sie die Autorisierung über die Anwendung erteilen und den Zugriff über das DigitalOcean-Kontrollfeld widerrufen.

Wenn Sie eine Anwendung verwenden, die die OAuth-Authentifizierung von DigitalOcean verwendet, werden Sie auf eine Seite weitergeleitet, auf der Sie auswählen können, ob Sie der Anwendung Zugriff auf Ihr DigitalOcean-Konto gewähren möchten.

Die Seite sieht dann so aus:

image: https://assets.digitalocean.com/articles/apps_and_api/auth_request.png [DigitalOcean-App-Authentifizierungsanfrage]

Die Anforderung definiert, ob die Anwendung schreibgeschützten Zugriff oder Lese- und Schreibzugriff anfordert. Wenn Sie den angeforderten Zugriff gewähren möchten, kehren Sie zu der Anwendung zurück, die sich nun authentifiziert, um mit Ihrem Konto zu arbeiten.

Wenn Sie den Zugriff widerrufen möchten, rufen Sie einfach Ihr DigitalOcean-Konto auf und klicken Sie im linken Navigationsmenü des Control Panels auf den Abschnitt „https://cloud.digitalocean.com/settings/applications[Apps & API]“:

Im Abschnitt "Autorisierte Anwendungen" sollte für jede Anwendung, für die Sie Zugriff gewährt haben, ein Eintrag angezeigt werden.

Klicken Sie auf die Schaltfläche "Widerrufen", um den Zugriff der zugehörigen Anwendung auf Ihr Konto zu entfernen:

image: https: //assets.digitalocean.com/articles/apps_and_api/revoke_access.png [DigitalOcean kann widerrufen]

Die Anwendung hat keinen Zugriff mehr auf Ihr Konto.

Verwenden von OAuth zum Authentifizieren von Benutzern als Entwickler

Um OAuth als Entwickler zu nutzen, müssen Sie zwei separate Prozesse durchlaufen. Zunächst müssen Sie Ihre Anwendung registrieren, um die für die Anforderung des Zugriffs erforderlichen Anmeldeinformationen zu erhalten. Anschließend müssen Sie Ihre Anwendung entwickeln, um Anforderungen korrekt zu stellen und die Antworten sowohl vom Browser des Benutzers als auch von den DigitalOcean-Servern zu verarbeiten.

Registrieren von Entwickleranwendungen bei DigitalOcean

Wenn Sie als Entwickler Benutzer über OAuth authentifizieren müssen, müssen Sie Ihre Anwendung zunächst über das DigitalOcean-Kontrollfeld registrieren.

Im Abschnitt "https://cloud.digitalocean.com/settings/applications[Apps & API]" des Control Panels wird in der Mitte der Seite ein Abschnitt mit dem Titel "Developer Applications" angezeigt:

image: https://assets.digitalocean.com/articles/apps_and_api/developer_apps_section.png [Abschnitt für DigitalOcean-Entwickleranwendungen]

Um eine neue Anwendung zu registrieren, klicken Sie auf die Schaltfläche "Neue Anwendung registrieren" auf der rechten Seite:

Sie werden zur Registrierungsseite weitergeleitet.

image: https://assets.digitalocean.com/articles/apps_and_api/app_info.png [Registrierungsinformationen für die DigitalOcean-App]

Hier müssen Sie einige grundlegende Informationen wie den Namen und die Homepage Ihrer Anwendung sowie eine kurze Beschreibung bereitstellen. Beachten Sie, dass diese Informationen auf der Seite für Autorisierungsanfragen für Benutzer angezeigt werden.

Sie müssen auch eine Rückruf-URL für die Anwendung angeben. Hier konfigurieren Sie Ihre Anwendung für die Bearbeitung von Autorisierungsantworten. Weitere Informationen zur Verarbeitung einer OAuth-Anfrage finden Sie im nächsten Abschnitt oder im Handbuch [OAuth-Authentifizierung].

Wenn Sie Ihre Daten übermitteln, werden Sie auf eine Seite mit den Informationen weitergeleitet, die zum Erstellen der Autorisierungsanwendung oder des Autorisierungsskripts unter der von Ihnen angegebenen Rückruf-URL erforderlich sind. Dies umfasst Ihre Kunden-ID, Ihr Kundengeheimnis und einen vorformatierten Link zur Autorisierungsanfrage, über den Sie Benutzer zu Folgendem weiterleiten können:

Implementierung von DigitalOcean OAuth in Ihrer Anwendung

Um die OAuth-Authentifizierung zu implementieren, muss Ihre Anwendung Ihre Benutzer zunächst an einen Endpunkt umleiten:

https://cloud.digitalocean.com/v1/oauth/authorize

Diese Umleitung sollte Ihre Client-ID, die Rückruf-URL als Wert von "+ redirect_uri " und " response_type = code " enthalten. Sie können optional den Umfang des Token festlegen, den Sie anfordern (z. ` scope =% 20write lesen +` für vollen Zugriff). Ein Beispiel für eine Weiterleitung könnte folgendermaßen aussehen:

https://cloud.digitalocean.com/v1/oauth/authorize?client_id=&redirect_uri=&response_type=code&scope=read%20write

Wenn der Benutzer nach dem Gewähren des Zugriffs zu Ihrer angegebenen Rückruf-URL umgeleitet wird, wird ein Code, den Sie erfassen müssen, als Abfrageparameter eingefügt.

Senden Sie als Nächstes eine POST-Anfrage an:

https://cloud.digitalocean.com/v1/oauth/token

Fügen Sie Ihre Kunden-ID, Ihr Kundengeheimnis, die Rückruf-URL als "+ redirect_uri " - Wert, den Code, den Sie von der Benutzerumleitung erhalten haben, und setzen Sie " grant_type = authorized_code +". Eine Beispielanfrage könnte folgendermaßen aussehen:

https://cloud.digitalocean.com/v1/oauth/token?client_id=&client_secret=&code=&grant_type=authorization_code&redirect_uri=

Die gesamte Antwort sieht ungefähr so ​​aus:

{"provider"=>:digitalocean, "info"=>{"name"=>"some_name", "email"=>"[email protected]"}, "credentials"=>{"token"=>"", "expires_at"=>1405443515, "expires"=>true}, "extra"=>{}}

Sie können dann in nachfolgenden Anfragen das "++" verwenden, um Aktionen für das Benutzerkonto durchzuführen.

Die meisten Entwickler nutzen eine OAuth-Bibliothek für die Sprache ihrer Wahl, um diesen Prozess zu vereinfachen. Es ist jedoch immer gut, eine allgemeine Vorstellung davon zu haben, was hinter den Kulissen passiert.

Akzeptierte Bereiche

In Bereichen können Sie die Art des Zugriffs angeben, die Sie benötigen. Bereiche beschränken den Zugriff auf OAuth-Token. Hier ist die Liste der Bereiche, die vom DigitalOcean OAuth-Endpunkt akzeptiert werden:

Name Description

(no scope)

Defaults to read scope.

read

Grants read-only access to user account. This allows actions that can be requested using the GET and HEAD methods.

read write

Grants read/write access to user account, i.e. full access. This allows actions that can be requested using the DELETE, PUT, and POST methods, in addition to the actions allowed by the read scope.

Entwicklerressourcen

omniauth-digitalocean Gem

Da DigitalOcean Ruby intern verwendet, stellen wir der Community eine Open-Source-OAuth-Strategie zur Verfügung. Das Juwel omniauth-digitalocean ist auf Github und wird in RubyGems veröffentlicht. Es basiert auf OmniAuth, der weit verbreiteten Rack-basierten Bibliothek für die Multi-Provider-Authentifizierung, und bietet eine einfache Möglichkeit, die Anmeldung mit DigitalOcean in Rails und Rack-Frameworks zu integrieren.

Fazit

OAuth ist eine bewährte Methode, um Anwendungen Zugriff auf Ihr Konto zu gewähren oder den Zugriff auf das Konto von Benutzern anzufordern. Die DigitalOcean-Seite „Apps & API“ ist bestrebt, diesen Vorgang für beide Seiten so einfach wie möglich zu gestalten.

Eine technische Übersicht über die OAuth-API von DigitalOcean finden Sie hier: DigitalOcean OAuth Overview.

Weitere Informationen zur Funktionsweise von OAuth finden Sie in unserem Community-Artikel: Eine Einführung in OAuth 2.