問題 No.3676
利用者があるWebサービスから、自身の写真共有アプリに対して、写真データへのアクセス権限を安全に付与したいと考えている。このとき、自身のパスワードを写真共有アプリに直接教えることなく、アクセス許可を与える仕組みとして最も適切なものはどれか。
【正解の解説】
OAuthを利用して、サービスが発行するアクセストークンを写真共有アプリに引き渡すことで、パスワードを共有せずに権限を委与する。
ホテルでルームキーなしの他人に自分のマスターキーを渡すのは危険ですが、一時的かつ特定の部屋だけ開けられる「合鍵」を発行すれば安全です。OAuthはこの合鍵であるアクセストークンを発行することで、写真共有アプリにパスワードを教えずに安全にデータアクセスを許可します。
スポンサーリンク
【その他の選択肢の解説】
OpenID Connectを利用して、サービスが発行するIDトークンを写真共有アプリに引き渡すことで、パスワードを共有せずに権限を委与する。
初学者が最も混同しやすいポイントです。OpenID Connectは「あなたは誰ですか?」という本人確認(認証)を担当し、OAuthは「何をしてもよいですか?」という権限の委与(認可)を担当します。今回は権限の付与が目的なのでOAuthが正解となります。
SSL/TLSを利用して、サービスが発行するセッションIDを写真共有アプリに引き渡すことで、パスワードを共有せずに権限を委与する。
SSL/TLSは、インターネット上のデータを覗き見されないように鍵をかけて保護する「道路のトンネル」のような通信暗号化の技術です。アプリにアクセス権限を安全に渡すという、権限委与の仕組みとは役割が全く異なります。
APIキーを利用して、サービスが発行するマスターパスワードを写真共有アプリに引き渡すことで、認証情報を共有せずに権限を委与する。
パスワードそのものを渡すことはセキュリティ上最も避けるべき行為です。APIキーはアプリの識別等に用いられますが、問題文にある「パスワードを直接教えることなく安全に権限を与える」という目的にはOAuthのような専用の仕組みが必要です。