OAuthとは?
Open Authorizationの略。ユーザーのパスワードを渡さずに、アプリが別サービスのリソースへ限定的にアクセスする権限を委譲する標準プロトコル
詳細解説
OAuth(Open Authorization)は、ユーザーがパスワードを第三者のアプリに渡すことなく、特定のサービス(リソースサーバー)へのアクセス権限を限定的に委譲できる業界標準プロトコルです。現在はOAuth 2.0が主流です。OAuth 2.0の典型的なフローは「Googleで続ける」「Xでログイン」ボタンでお馴染みです。具体例:スケジュールアプリがGoogleカレンダーのデータにアクセスしたい場合、ユーザーはGoogleアカウントのパスワードをスケジュールアプリに渡す必要はなく、Googleの認証画面で「カレンダーの閲覧を許可」と承認するだけで、スケジュールアプリは限定的なアクセストークンを取得します。OAuth 2.0の主要ロールはリソースオーナー(ユーザー)・クライアント(サードパーティアプリ)・認証サーバー(Googleなど)・リソースサーバー(Google カレンダーAPI)です。アクセストークンはスコープ(権限範囲)・有効期限が設定されており、期限切れ時はリフレッシュトークンで更新します。OAuthは「認可(Authorization)」の仕組みであり、「認証(Authentication)」は担当しません。認証を加えたOAuth 2.0の拡張プロトコルがOIDC(OpenID Connect)で、IDトークン(JWT形式)を追加してユーザー身元確認も可能にします。OAuth連携のセキュリティリスクはアクセストークンの漏洩・不正なリダイレクトURI(認可コードインターセプト)・過剰な権限スコープの承認です。ITパスポートでは「OAuthの目的」「認証と認可の違い」「アクセストークン・スコープの概念」「OIDCとの関係」が出題されます。
ITパスポートでの出題ポイント
- 1パスワードを渡さずにアクセス権限を委譲する認可プロトコル
- 2アクセストークンにスコープと有効期限を設定して限定的に権限付与
- 3OAuthは「認可」、OIDCはOAuth 2.0 + ユーザー「認証」の拡張
- 4SNS連携ログイン(Googleで続ける等)はOAuth 2.0 + OIDCの実装