情報処理安全確保支援士試験 令和5年秋期午前Ⅱ OAuth2.0
出典:令和5年秋期 午前Ⅱ 問14
分野:セキュリティ / セキュリティ実装技術
OAuth2.0に関する記述のうち,適切なものはどれか。
- ア:認可を行うためのプロトコルであり,認可サーバが,アクセスしてきた者が利用者(リソースオーナー)本人であるかどうかを確認するためのものである。
- イ:認可を行うためのプロトコルであり,認可サーバが,利用者(リソースオーナー)の許可を得て,サービス(クライアント)に対し,適切な権限を付与するためのものである。
- ウ:認証を行うためのプロトコルであり,認証サーバが,アクセスしてきた者が利用者(リソースオーナー)本人であるかどうかを確認するためのものである。
- エ:認証を行うためのプロトコルであり,認証サーバが,利用者(リソースオーナー)の許可を得て,サービス(クライアント)に対し,適切な権限を付与するためのものである。
TSUNAGARU-ADVICE
まず押さえたいこと
OAuth 2.0は、利用者本人かどうかを確認する認証プロトコルではなく、利用者の許可に基づいてクライアントへアクセス権限を付与する認可プロトコルです。
迷ったときの判断軸
「本人確認」を主目的にしているなら認証、「サービスにどこまでアクセスさせるか」を決めるなら認可です。OAuth 2.0では、認可サーバが利用者の許可を得て、クライアントに適切な権限を付与すると整理すると判断しやすくなります。
科目Bにつなげるために
科目Bでは、OAuth 2.0を単なるログインの仕組みとしてではなく、誰がリソースを持ち、誰が許可し、どのサービスにどの範囲の権限を与えるのかを流れで読み取る力が問われます。認証と認可を混同しないように整理しておきましょう。
OAuth2.0は、あるWebサービスが持っている情報や機能を、利用者の許可を得て、別のWebサービスから使えるようにするための仕組みです。
たとえば、あるアプリが「Googleカレンダーの予定を読み取る」「SNSに投稿する」といった操作をしたい場合、利用者が許可すると、そのアプリにアクセストークンが発行されます。アクセストークンは、利用者の代わりにAPIへアクセスするための「許可証」のようなものです。
OAuth2.0のポイントは、IDやパスワードを別のアプリに渡さずに、必要な範囲だけ権限を与えられることです。
よくある例として、「Googleアカウントで登録する」「Facebookアカウントで連携する」といった画面があります。これは、GoogleやFacebookが持つ情報を、利用者の許可に基づいて別のサービスでも使えるようにする仕組みです。
ただし、OAuth2.0自体は「認証」ではなく「認可」の仕組みです。認証は「本人かどうかを確認すること」、認可は「何をしてよいかを許可すること」です。認証も含めて行う仕組みとしては、OpenID Connectがあります。
したがって、イが適切です。
❌他選択肢が誤りの理由ア:認可を行うためのプロトコルであり,認可サーバが,アクセスしてきた者が利用者(リソースオーナー)本人であるかどうかを確認するためのものである。
⇒認可プロトコルという点は合っていますが、本人確認を目的とするという点が違います。これは認証の説明です。
ウ:認証を行うためのプロトコルであり,認証サーバが,アクセスしてきた者が利用者(リソースオーナー)本人であるかどうかを確認するためのものである。
⇒OAuth 2.0は認証ではなく、認可のためのプロトコルです。
エ:認証を行うためのプロトコルであり,認証サーバが,利用者(リソースオーナー)の許可を得て,サービス(クライアント)に対し,適切な権限を付与するためのものである。
⇒権限付与の説明は認可ですが、認証プロトコルとしている点が違います。OAuth 2.0は認可のためのプロトコルです。