Oauth
OAuthとは
OAuthは認可情報の交換に使用されるプロトコルで、ユーザーの許可に基づいて複数のオンラインサービスを連携させることができます。「OAuth 1.0」は2010年4月にRFC 5849として公開され、その後「OAuth 2.0」が2012年10月にRFC 6749として公開されました。
Instagramに写真を投稿し、それをTwitterにも自動的に共有したいとします。両方のサービスに手動でアクセスして同じ内容を投稿するのは手間がかかります。そこでInstagramでは、クロスポストという機能を提供しています。この機能はAPIを使用し、Instagramの投稿をTwitterなどの他のソーシャルネットワークに自動的に共有できるようにするものです。この仕組みを支えているのがOAuthです。
Twitterに投稿する際、一般的な認証ではユーザーIDとパスワードが必要です。これはBasic Authenticationと呼ばれます。しかし、こうした機密性の高い認証情報を別のサービスと共有することにはリスクがあります。OAuthでは、認証情報の代わりに認可情報を交換し、タスクに必要な権限のみを付与することで、この問題を解決します。
OAuthの用語では:
- 認可を受けるサービス(Instagramなど)は、OAuthクライアントと呼ばれます。
- 認可を付与するサービス(Twitterなど)をOAuthサーバーと呼びます。
- ユーザーはリソースオーナーと呼ばれます。
プロセスを開始するには、OAuthクライアントはまず、アプリケーション名やドメインなどの詳細情報を提供して、OAuthサーバーに自身を登録する必要があります。OAuthサーバーがそのクライアントを信頼できると判断した場合、Client IDを割り当てます。
ユーザー(リソース所有者)が認可すると、OAuthクライアントはユーザーをOAuthサーバーにリダイレクトします。OAuthサーバーはユーザーを認証し、指定された権限をOAuthクライアントに付与してよいか確認します。ユーザーが承認すると、サーバーはアクセストークンを付与し、ユーザーをOAuthクライアントにリダイレクトして戻します。このトークンは認可の証明となり、OAuthクライアントはOAuthサーバーのAPIにアクセスできるようになります。トークンは、有効期限が切れるか、明示的に取り消されるまで有効です。

