OAuthとは

OAuth(オーオース)は、あるWebサービスが持つユーザーのデータへのアクセス権限を、ユーザーのIDやパスワードを直接教えることなく、別のWebサービスに安全に「認可(権限の付与)」するための標準プロトコル(手順の決まり)です。これにより、ユーザーは自分のアカウント情報を開示するリスクを避けることができ、サービス間での連携を安全かつスムーズに行えるようになります。
具体例
例えば、あなたが新しい旅行予約サイトを利用する際、そのサイトに新しくIDやパスワードを登録する代わりに、「Googleでログイン」や「LINEで連携」というボタンを押して、旅行サイトがあなたのメールアドレス情報にアクセスすることを許可します。旅行サイトにはGoogleのパスワードは一切伝わりません。
【OAuthのアクセス許可イメージ】\n1. 旅行サイト「Googleからあなたのメールアドレスを取得して良いですか?」\n2. ユーザーがGoogleの画面で「許可」を押す\n3. Googleが旅行サイトへ「アクセストークン(一時的な鍵)」を発行\n4. 旅行サイトはトークンを使ってメールアドレスを取得(パスワードは不要)もう少し詳しく
OAuth(一般には最新バージョンのOAuth 2.0を指します)は、リソース所有者(ユーザー)、クライアント(サードパーティアプリ)、認可サーバー、リソースサーバーの4つの役割の間で処理が進められます。ユーザーがクライアントアプリに対してデータ(リソース)へのアクセスを許可すると、認可サーバーはクライアントに対してパスワードの代わりとなる「アクセストークン」を発行します。クライアントはこのトークンをリソースサーバーに提示することで、スコープ(許可された権限の範囲。例:読み取り専用、メールアドレスのみ等)と有効期限の範囲内でのみリソースにアクセスできます。これにより、もしクライアント側からトークンが漏洩したとしても、本物のパスワードが漏れるわけではなく、トークンの失効処理によって迅速に被害を抑えることができます。OAuthはあくまで「認可(Authorization)」のためのプロトコルであり、ユーザーが誰であるかを特定する「認証(Authentication)」のためのプロトコルではありません。しかし、多くのWebサイトでOAuthが認証の用途で誤用され、セキュリティホール(身元引受人攻撃など)が生まれたため、OAuth 2.0をベースに認証機能を拡張した「OpenID Connect(OIDC)」というプロトコルが標準化され、現代のソーシャルログインではこのOIDCが主に用いられています。
試験でのポイント
応用情報技術者試験において、OAuthはセキュリティ分野とWeb開発技術の双方で頻出です。最も重要なのは「認証(Authentication)」と「認可(Authorization)」の概念的な違いを整理することです。「OAuthは、ユーザーのパスワードを明かすことなく、特定のデータや機能へのアクセス権限(認可)をサードパーティ製アプリケーションに安全に渡すための規格である」という点をしっかりと押さえてください。また、トークンの種類として「アクセストークン(有効期限が短いアクセス用の鍵)」と「リフレッシュトークン(アクセストークンを再発行するための鍵)」の役割の違いについても理解が必要です。さらに、OAuth 2.0の認可フローの1つである「認可コードグラント(Authorization Code Grant)」において、なぜブラウザ経由で直接トークンを渡さず、一度「認可コード」を介してバックエンドから安全にトークンを取得するのか、といったセキュリティ設計の理由も出題のポイントになります。
関連する用語
OAuthにユーザーの識別情報を伝えるIDトークンを追加して認証機能を実現したOpenID Connect(OIDC)、APIアクセス時に提示する一時的な利用権限であるアクセストークン、およびシングルサインオン(SSO)で使われるXMLベースの認証連携規格であるSAMLがあります。これらを対比して理解することで、現代のID・アクセス管理(IAM)の仕組みを学べます。