ユーザーまたは開発者としてDigitalOceanでOAuth認証を使用する方法
序章
DigitalOcean APIのバージョン2には、すべての人のエクスペリエンスを向上させる多くの変更が含まれています。 最も重要な新機能の1つは、ユーザーとアプリケーションのOAuth認証です。
OAuthシステムでは、APIを使用してアカウントで認証できます。 このアクセスは、簡単なユースケースの個人アクセストークンの形式で付与できますが、アプリケーションがアカウントにアクセスできるようにする際の柔軟性も提供します。
このガイドでは、アプリケーションがアカウントにアクセスする機能を付与または取り消す方法について説明します。 また、APIを活用するアプリケーションをDigitalOceanに登録する方法を説明することにより、対話の反対側についても説明します。 これにより、OAuthを使用してユーザーのアカウントへのアクセスをリクエストできるようになります。
アカウントをユーザーとして使用するためのアプリケーションの承認
アプリケーションにアカウントへのアクセスを許可することに関心がある場合は、アプリケーションを介して承認を付与し、DigitalOceanコントロールパネルを介してアクセスを取り消すことができます。
DigitalOceanのOAuth認証を利用するアプリケーションを使用する場合、アプリケーションにDigitalOceanアカウントへのアクセスを許可するかどうかを選択するページにリダイレクトされます。
ページは次のようになります。
要求は、アプリケーションが読み取り専用アクセスを要求しているか、読み取りおよび書き込みアクセスを要求しているかを定義します。 要求されたアクセスを許可することにした場合は、アプリケーションに戻ります。アプリケーションは、アカウントで動作することを認証します。
アクセスを取り消す場合は、DigitalOceanアカウントにアクセスして、「 アプリとAPI コントロールパネルの左側のナビゲーションメニューの「」セクション:
[承認されたアプリケーション]セクションの下に、アクセスを許可した各アプリケーションのエントリが表示されます。
「取り消す」ボタンをクリックして、関連するアプリケーションのアカウントへのアクセスを削除します。
アプリケーションはアカウントにアクセスできなくなります。
OAuthを使用してユーザーを開発者として認証する
開発者としてOAuthを利用するには、2つの別々のプロセスを実行する必要があります。 まず、アクセスを要求するために必要な資格情報を取得するために、アプリケーションを登録する必要があります。 その後、アプリケーションを開発して、ユーザーのブラウザーとDigitalOceanサーバーの両方から正しく要求を行い、応答を処理する必要があります。
DigitalOceanへの開発者アプリケーションの登録
OAuthを介してユーザーを認証する必要がある開発者の場合は、最初にDigitalOceanコントロールパネルを介してアプリケーションを登録する必要があります。
の中に “ アプリとAPI コントロールパネルの「」セクションのページ中央に、「開発者向けアプリケーション」というタイトルのセクションが表示されます。
新規申請を登録するには、右側の「新規申請ボタン」をクリックしてください。
登録ページに移動します。
ここでは、アプリケーションの名前やホームページなどの基本的な情報を提供し、簡単な説明を提供する必要があります。 この情報は、ユーザーの承認リクエストページに表示されることに注意してください。
また、アプリケーションのコールバックURLを指定する必要があります。 これは、承認応答を処理するようにアプリケーションを構成する場所です。 OAuthリクエストの処理に必要なものについて詳しくは、次のセクションまたはOAuth認証ガイドをご覧ください。
詳細を送信すると、指定したコールバックURLに存在する認証アプリケーションまたはスクリプトを作成するために必要な情報が記載されたページが表示されます。 これには、クライアントID、クライアントシークレット、およびユーザーを次の場所にリダイレクトするための事前にフォーマットされた承認リクエストリンクが含まれます。
アプリケーションにDigitalOceanOAuthを実装する
OAuth認証を実装するには、アプリケーションは最初にユーザーを次のエンドポイントにリダイレクトする必要があります。
https://cloud.digitalocean.com/v1/oauth/authorize
このリダイレクトには、クライアントID、コールバックURLが値として含まれている必要があります。 redirect_uri
、およびセット response_type=code
. オプションで、要求しているトークンのスコープを設定できます(例: scope=read%20write
フルアクセス用)。 リダイレクトの例は次のようになります。
https://cloud.digitalocean.com/v1/oauth/authorize?client_id=client_id&redirect_uri=callback_URL&response_type=code&scope=read%20write
アクセスを許可した後、ユーザーが指定されたコールバックURLにリダイレクトされると、キャプチャする必要のあるコードがクエリパラメーターとして含まれます。
次に、POSTリクエストを次の宛先に送信します。
https://cloud.digitalocean.com/v1/oauth/token
クライアントID、クライアントシークレット、コールバックURLを redirect_uri
値、ユーザーリダイレクトから受け取ったコード、および設定 grant_type=authorization_code
. リクエストの例は次のようになります。
https://cloud.digitalocean.com/v1/oauth/token?client_id=client_id&client_secret=client_secret&code=code_from_user_redirect&grant_type=authorization_code&redirect_uri=callback_URL
全体の応答は次のようになります。
{"provider"=>:digitalocean, "info"=>{"name"=>"some_name", "email"=>"[email protected]"}, "credentials"=>{"token"=>"$AUTH_TOKEN", "expires_at"=>1405443515, "expires"=>true}, "extra"=>{}}
その後、を使用することができます AUTH_TOKEN
ユーザーのアカウントでアクションを実行するための後続のリクエスト。
ほとんどの開発者は、選択した言語にOAuthライブラリを利用して、このプロセスを簡素化しますが、舞台裏で何が起こっているかについての一般的な考え方を持っていることは常に良いことです。
受け入れられる範囲
スコープを使用すると、必要なアクセスのタイプを指定できます。 スコープは、OAuthトークンへのアクセスを制限します。 DigitalOceanOAuthエンドポイントで受け入れられるスコープのリストは次のとおりです。
名前 | 説明 |
---|---|
(スコープなし) | デフォルトはreadスコープです。 |
読む | ユーザーアカウントへの読み取り専用アクセスを許可します。 これにより、GETメソッドとHEADメソッドを使用して要求できるアクションが可能になります。 |
読み書き | ユーザーアカウントへの読み取り/書き込みアクセスを許可します。 全権アクセス。 これにより、 read スコープで許可されるアクションに加えて、DELETE、PUT、およびPOSTメソッドを使用して要求できるアクションが許可されます。 |
開発者向けリソース
omniauth-digitalocean Gem
DigitalOceanは内部でRubyを使用しているため、コミュニティが使用できるオープンソースのOAuth戦略を提供しています。 omniauth-digitalocean gemはGithubにあり、RubyGemsに公開されています。 これは、マルチプロバイダー認証に広く使用されているRackベースのライブラリである OmniAuth に基づいており、「DigitalOceanでサインイン」をRailsおよびRackフレームワークに統合する簡単な方法です。
結論
OAuthは、アプリケーションにアカウントへのアクセスを許可したり、ユーザーにアカウントアクセスを要求したりするための確立された方法です。 DigitalOceanの「Apps&API」ページは、このプロセスを両方の当事者にとって可能な限り簡単にするよう努めています。
DigitalOceanのOAuthAPIの技術的な概要については、ここをクリックしてください:DigitalOceanOAuthの概要。
OAuthの仕組みの詳細については、コミュニティの記事 An Introduction to OAuth2をご覧ください。