OAuth2.0
RFC 6749は、“OAuth 2.0認可フレームワーク"について定義しています。ここでは、OAuth 2.0の重要な概念や仕組みを簡単に説明します。
OAuth 2.0は、インターネット上でユーザーのリソースへのアクセス許可を安全に委任するためのオープンスタンダードです。サービス間でユーザー情報の共有が必要な場合、そのユーザーのパスワードを渡す代わりに、ユーザーの同意に基づきアクセス権限を委任できます。例えば、ソーシャルメディアサイトがユーザーの代わりにメールサービスにアクセスして連絡先を取得する、というシナリオが考えられます。
主な要素は以下のとおりです:
-
リソースオーナー(Resource Owner): リソース(データ)の所有者であり、通常はエンドユーザーです。
-
クライアント(Client): リソースオーナーの代わりにリソースサーバーへのアクセスを要求するアプリケーションです。
-
認可サーバー(Authorization Server): クライアントにアクセストークンを発行し、認可を行うサーバーです。
-
リソースサーバー(Resource Server): クライアントがアクセスを求めるリソースを持っているサーバーです。
-
アクセストークン(Access Token): 認可サーバーがクライアントに発行する、リソースへのアクセスを許可するためのトークンです。
主なフローは以下のようになります:
- クライアントがリソースオーナーからリソースへのアクセス許可を要求します。
- リソースオーナーがこのリクエストを承認します。
- クライアントがリソースオーナーの承認を認可サーバーに提出し、アクセストークンを要求します。
- 認可サーバーがクライアントにアクセストークンを発行します。
- クライアントはこのアクセストークンを使用してリソースサーバーにアクセスします。
OAuth 2.0は、認可コードフロー、インプリシットフロー、パスワードクレデンシャルフロー、クライアントクレデンシャルフローなど、さまざまな認証フローをサポートしており、使うシーンによって適切なフローを選択します。