Comment utiliser l’authentification OAuth avec DigitalOcean en tant qu’utilisateur ou développeur

introduction

La version 2 de l’API DigitalOcean inclut de nombreuses modifications qui améliorent l’expérience de chacun. L’authentification OAuth pour les utilisateurs et les applications est l’une des nouvelles fonctionnalités les plus importantes.

Le système OAuth vous permet de vous authentifier avec votre compte à l’aide de l’API. Cet accès peut être accordé sous forme de jetons d’accès personnel pour des cas d’utilisation simples, mais il offre également une flexibilité permettant aux applications d’accéder à votre compte.

Dans ce guide, nous verrons comment accorder ou révoquer la capacité d’une application à accéder à votre compte. Nous aborderons également l’autre côté de l’interaction en expliquant comment enregistrer des applications qui exploitent l’API avec DigitalOcean. Cela vous permettra d’utiliser OAuth pour demander l’accès aux comptes de vos utilisateurs.

Autoriser les applications à utiliser votre compte en tant qu’utilisateur

Si vous souhaitez simplement donner aux applications l’accès à votre compte, vous pourrez accorder une autorisation via l’application et révoquer l’accès via le panneau de configuration de DigitalOcean.

Lors de l’utilisation d’une application utilisant l’authentification OAuth de DigitalOcean, vous serez redirigé vers une page afin de choisir si vous souhaitez accorder à l’application l’accès à votre compte DigitalOcean.

La page ressemblera à ceci:

image: https: //assets.digitalocean.com/articles/apps_and_api/auth_request.png [Demande d’autorisation d’application DigitalOcean]

La demande définira si l’application demande un accès en lecture seule ou un accès en lecture et en écriture. Si vous décidez d’accorder l’accès demandé, vous serez redirigé vers l’application, qui s’authentifiera pour fonctionner sur votre compte.

Si vous souhaitez révoquer l’accès, accédez simplement à votre compte DigitalOcean et cliquez sur la section «https://cloud.digitalocean.com/settings/applications[Apps & API]» dans le menu de navigation de gauche du panneau de commande:

image: https: //assets.digitalocean.com/articles/apps_and_api/left_nav.png [Navigation à gauche de DigitalOcean]

Sous la section «Applications autorisées», vous devriez voir une entrée pour chacune des applications auxquelles vous avez accordé l’accès.

image: https: //assets.digitalocean.com/articles/apps_and_api/authorized_app.png [Application autorisée de DigitalOcean]

Cliquez sur le bouton "révoquer" pour supprimer l’accès de l’application associée à votre compte:

image: https: //assets.digitalocean.com/articles/apps_and_api/revoke_access.png [DigitalOcean annule sa révocation]

L’application n’aura plus accès à votre compte.

Utilisation de OAuth pour authentifier les utilisateurs en tant que développeur

Pour utiliser OAuth en tant que développeur, vous devez suivre deux processus distincts. Tout d’abord, vous devez enregistrer votre application pour obtenir les informations d’identification nécessaires pour demander l’accès. Ensuite, vous devez développer votre application pour pouvoir effectuer les demandes correctement et gérer les réponses du navigateur de l’utilisateur et des serveurs DigitalOcean.

Enregistrement d’applications de développeur avec DigitalOcean

Si vous êtes un développeur ayant besoin d’authentifier des utilisateurs via OAuth, vous devez d’abord enregistrer votre application via le panneau de configuration de DigitalOcean.

Dans la section "https://cloud.digitalocean.com/settings/applications[Apps & API]" du panneau de configuration, au centre de la page, vous verrez une section intitulée "Applications de développement":

image: https: //assets.digitalocean.com/articles/apps_and_api/developer_apps_section.png [Section des applications de développement DigitalOcean]

Pour enregistrer une nouvelle application, cliquez sur le bouton «Enregistrer une nouvelle application» à droite:

image: https: //assets.digitalocean.com/articles/apps_and_api/register.png [Application du registre DigitalOcean]

Vous serez dirigé vers la page d’inscription.

image: https: //assets.digitalocean.com/articles/apps_and_api/app_info.png [Informations d’enregistrement de l’application DigitalOcean]

Dans ce cas, vous devrez fournir des informations de base, telles que le nom et la page d’accueil de votre application, et en fournir une brève description. N’oubliez pas que ces informations s’afficheront sur la page de demande d’autorisation pour les utilisateurs.

Vous devrez également fournir une URL de rappel pour l’application. C’est un emplacement où vous allez configurer votre application pour gérer les réponses d’autorisation. Reportez-vous à la section suivante ou au lien: guide [Authentification OAuth] pour en savoir plus sur les éléments nécessaires au traitement d’une demande OAuth.

Lorsque vous transmettez vos informations, vous accédez à une page contenant les informations nécessaires à la création de l’application d’autorisation ou du script résidant à l’URL de rappel que vous avez indiquée. Cela inclut votre ID client, votre secret client et un lien de demande d’autorisation pré-formaté pour rediriger les utilisateurs vers:

image: https: //assets.digitalocean.com/articles/apps_and_api/app_details.png [Détails de l’application DigitalOcean]

Implémentation de DigitalOcean OAuth dans votre application

Pour implémenter l’authentification OAuth, votre application doit d’abord rediriger vos utilisateurs vers un noeud final à l’adresse suivante:

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

Cette redirection doit contenir votre identifiant client, l’URL de rappel comme valeur + redirect_uri + et la valeur + type_réponse = code +. Vous pouvez éventuellement définir la portée du jeton que vous demandez (par exemple, + scope = read% 20write + pour un accès complet). Un exemple de redirection pourrait ressembler à ceci:

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

Lorsque l’utilisateur est redirigé vers l’URL de rappel fournie après avoir accordé l’accès, un code que vous devez capturer sera inclus en tant que paramètre de requête.

Ensuite, envoyez une demande POST à:

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

Incluez votre ID client, votre secret client, l’URL de rappel en tant que valeur + redirect_uri +, le code que vous avez reçu de la redirection utilisateur et définissez + grant_type = autorisation_code +. Un exemple de demande pourrait ressembler à ceci:

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

La réponse entière ressemblera à quelque chose comme ceci:

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

Vous pouvez ensuite utiliser le ++ dans les requêtes suivantes pour effectuer des actions sur le compte de l’utilisateur.

La plupart des développeurs utilisent une bibliothèque OAuth pour choisir la langue de leur choix afin de simplifier ce processus, mais il est toujours bon d’avoir une idée générale de ce qui se passe dans les coulisses.

Portées acceptées

Les étendues vous permettent de spécifier le type d’accès dont vous avez besoin. Les étendues limitent l’accès aux jetons OAuth. Voici la liste des étendues acceptées par le terminal DigitalOcean OAuth:

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.

Ressources pour développeurs

omniauth-digitalocean Gem

Puisque DigitalOcean utilise Ruby en interne, nous fournissons une stratégie OAuth open source à la communauté. Le joyau omniauth-digitalocean est disponible sur Github et publié sur RubyGems. Basé sur OmniAuth, la bibliothèque largement utilisée basée sur Rack pour l’authentification par plusieurs fournisseurs, il constitue un moyen simple d’intégrer la «connexion à DigitalOcean» aux infrastructures Rails et Rack.

Conclusion

OAuth est un moyen bien établi d’accorder aux applications l’accès à votre compte ou de demander l’accès au compte des utilisateurs. La page «Applications et API» de DigitalOcean s’efforce de rendre ce processus aussi simple que possible pour les deux parties.

Pour un aperçu technique de l’API OAuth de DigitalOcean, cliquez ici: DigitalOcean OAuth Overview.

Pour en savoir plus sur le fonctionnement de OAuth, consultez notre article sur la communauté: An Introduction to OAuth 2.