745 文字
4 分
OAuthについて
OAuth(Open Authorization)とは
OAuthは、第三者がユーザーの認証情報(パスワードなど)を直接扱うことなく、ユーザーの情報やリソースにアクセスすることを可能にする認可フレームワークです。OAuthは主にWebサービスやAPIの認可プロセスで利用されています。
OAuthを利用することで、ユーザーは各種サービス(Google、Facebook、Xなど)のアカウントを利用して、別のアプリケーションに安全にログインできるようになります。
OAuthで使用される用語
- クライアント
ユーザーの代わりにリソースにアクセスするアプリケーションやサービス。 - 認可サーバー
クライアントがリソースにアクセスするための許可を発行するサーバー。(Google OAuthなど)
ユーザーがリソースへのアクセスを許可すると、認可サーバーはクライアントにアクセストークンで許可を与える。
アクセストークンでクライアントはリソースサーバーにアクセスできるようになる。 - リソースオーナー
ユーザー。認証情報を持つ主体。 - リソースサーバー
リソース(データ)を保管し、それを提供するサーバー。 - アクセストークン
クライアントがリソースサーバーに対してリソースへのアクセス権を持っていることを証明するために使用されるトークン。 - リフレッシュトークン
アクセストークンの有効期限が切れた際に、新しいアクセストークンを取得するために使われるトークン。
アクセストークンより有効期限が長く、新しいトークンを取得する手間を省くことができる。
OAuthの流れ
- クライアントが認可サーバーにアクセストークンを要求
- 認可サーバーがクライアントが要求している権限を与えるかリソースオーナーに確認
- リソースオーナーが権限を与えることを了承
- 認可サーバーがアクセストークンを生成し、クライアントに発行
- クライアントがリソースサーバーにアクセストークンを使用してアクセス
- リソースサーバーがアクセストークンを検証し、クライアントにリソースを提供
OAuthのメリット
OAuthは認可のための仕組みなので、連携先のサービスにユーザーの情報を渡す必要がないため、連携が容易です。
また、サービスごとにユーザーの情報を管理する必要がないため、ユーザーの利便性が高くなります。
OAuthでは認証で使用するIDやパスワードを連携しないので、連携先のサービスでユーザーの情報が漏洩するリスクが少なくなります。
OAuthのデメリット
悪意のあるWebサービスで認可処理を実行してしまうと、アクセストークンを悪用してなりすましを行う事ができたり、ECサイトなどで認証情報を盗まれて勝手に商品を購入されたりなどの被害が出る可能性があります。
Webサービスを利用する時にOAuthを求められたら、どのサービスがどのサービスに対して許可されているか、許可した時にどのようなリソースを操作するかを確認しておくといいかもしれません。
このようにOAuthは便利な反面、セキュリティの面でも注意が必要です。