OAuth(オーオース)とは | 意味や読み方など丁寧でわかりやすい用語解説
OAuth(オーオース)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
オーオース (オーオース)
英語表記
OAuth (オーオース)
用語解説
OAuthとは、ユーザーが自身の情報を、パスワードを直接共有することなく、別のアプリケーションに限定的なアクセス権限を与えるための「認可」のフレームワークである。現代のウェブサービスやモバイルアプリで広く利用されており、例えば、あるウェブサイトに「Googleでログイン」や「Facebookでログイン」といったソーシャルログイン機能を提供する際や、写真加工アプリがGoogle Photosにアクセスしてユーザーの写真を編集する際などに活用されている。これはユーザーのパスワードを共有する危険性を排除し、より安全にデータ連携を行うための仕組みと言える。
従来のシステムでは、もしあるアプリケーションが別のサービスのユーザーデータにアクセスする必要がある場合、ユーザーは対象サービスのユーザー名とパスワードをそのアプリケーションに直接入力する必要があった。この方法にはいくつかの大きな問題点がある。一つは、ユーザーのパスワードが第三者のアプリケーションに渡ってしまうため、セキュリティ上のリスクが高いこと。もしそのアプリケーションが不正な目的を持っていたり、セキュリティに脆弱性があったりした場合、ユーザーのパスワードが漏洩する危険性があった。もう一つは、アプリケーションに全権限が与えられてしまうこと。例えば、写真編集アプリにGoogleアカウントのパスワードを渡してしまった場合、そのアプリは写真の閲覧・編集だけでなく、メールの送受信や連絡先の閲覧など、写真編集には不要な情報にまでアクセスできてしまう可能性があった。OAuthはこれらの問題を解決するために設計された。
OAuthは主に「認可」を行うためのフレームワークであり、「認証」そのものを行うわけではない点に注意が必要である。ここでいう認証とは「あなたは誰であるか」を確認するプロセスであり、認可とは「あなたは何ができるか」を許可するプロセスである。OAuthでは、ユーザーが別のサービスへのアクセスを許可する際、その許可の範囲(例:写真の閲覧のみ、プロフィールの公開のみ)を細かく指定できる。これにより、必要最小限の権限のみを第三者のアプリケーションに与えることが可能となる。
OAuthの具体的な流れは、いくつかの登場人物の間でやり取りが行われることで成立する。主な登場人物は、ユーザー、クライアントアプリケーション、リソースサーバー、そして認可サーバーの四者である。
まず、ユーザーがあるクライアントアプリケーション(例えば写真加工アプリ)を使用し、そのアプリがリソースサーバー(例えばGoogle Photos)に保存されているユーザーのデータ(写真)にアクセスしたいと要求する場面を考える。
- クライアントアプリケーションからのリクエスト: クライアントアプリケーションは、ユーザーの代理としてリソースサーバーにアクセスするために、認可サーバーにアクセス許可のリクエストを送る。
- ユーザーへの認可要求: 認可サーバーは、リソースサーバーの所有者であるユーザーに対して、クライアントアプリケーションにアクセスを許可するかどうかを尋ねる画面を表示する。この際、クライアントアプリケーションがどのような情報(スコープ)にアクセスしようとしているか(例:写真の閲覧、プロフィールの公開など)が明確に示される。
- ユーザーの許可: ユーザーが内容を確認し、クライアントアプリケーションへのアクセスを許可すると、認可サーバーはクライアントアプリケーションに「認可コード」を発行する。このコードは一時的なものであり、直接データにアクセスする権限は持たない。
- アクセストークンの取得: クライアントアプリケーションは、この認可コードと自身のクライアントID、クライアントシークレットを認可サーバーに提示し、「アクセストークン」の発行を要求する。クライアントシークレットは、クライアントアプリケーションが正当なものであることを認可サーバーが確認するための秘密鍵のようなものである。
- アクセストークンの発行: 認可サーバーは、認可コードとクライアントの情報を検証し、問題がなければ、クライアントアプリケーションに「アクセストークン」を発行する。このアクセストークンこそが、クライアントアプリケーションがユーザーのリソースサーバーにアクセスするための鍵となる。
- リソースへのアクセス: クライアントアプリケーションは、このアクセストークンをリソースサーバーに提示することで、ユーザーが許可した範囲のリソース(写真など)にアクセスし、必要な操作を行うことができる。リソースサーバーは、受け取ったアクセストークンを検証し、有効であれば要求されたリソースを提供する。
この一連のプロセスにおいて、ユーザーのパスワードはクライアントアプリケーションに一度も渡されない。クライアントアプリケーションが手にするのは、有効期限があり、特定の権限に限定されたアクセストークンのみである。万が一アクセストークンが漏洩しても、パスワードそのものが漏洩するよりはリスクが低い。ユーザーはいつでも不要になったアプリケーションのアクセス権限を取り消すこともできるため、セキュリティと利便性を両立させた仕組みと言える。
現在主流となっているのはOAuth 2.0というバージョンである。OAuth 2.0は、OAuth 1.0に比べてよりシンプルで実装が容易になり、モバイルアプリケーションやシングルページアプリケーションなど、様々なクライアント環境に対応できるように柔軟性が高められている。このようにOAuthは、現代のインターネットサービスにおいて、ユーザーデータの安全な連携を実現するための不可欠な技術基盤となっている。