OAuth、仕組みを説明できる?
「Googleでログイン」ボタンの裏側で何が起きているか、パスワードを渡さずに連携できる仕組みを説明できるか確認します。
この問題のねらい
OAuthを「ログインに使う便利なボタン」という表面的な理解ではなく、認可の仕組みであってそれ自体は認証のためのものではないこと、アクセストークンによって権限を渡す仕組みまで説明できるかを確かめます。
はじめる前に
この問題では、すぐに正解は表示しません。まず自分の言葉で回答してみてください。
最後まで回答すると、問題とあなたの回答をまとめてコピーできます。普段使っているAIチャットに貼り付けると、理解度をチェックしてもらえます。
こんな問題が出ます
- Q1
OAuth(OAuth 2.0)とはどのような仕組みですか? 「認可(authorization)」という言葉を使って、何のための仕組みかを説明してください。
- Q2
「Googleでログイン」のようなボタンは、OAuthを使ったログイン機能としてよく紹介されます。 しかしOAuth自体は本来「認証(authentication)」のための仕組みではないとされています。なぜそう言われるのか説明してください。
- Q3
OAuthの代表的な流れ(認可コードフロー)では、ユーザーがクライアントのアプリから認可サーバーの画面にリダイレクトされ、そこで許可を出したあと、最終的にクライアントがアクセストークンを受け取ります。 この間、クライアントのアプリはユーザーのID・パスワードを一度でも受け取りますか?流れの概要とあわせて説明してください。
- Q4
OAuthでは、認可を受けた範囲を表すために「スコープ(scope)」という概念があります。 スコープはどのような役割を果たしていますか?具体例を挙げて説明してください。
- Q5
OAuthでは「アクセストークン」に加えて「リフレッシュトークン」が発行されることがあります。 なぜ2種類のトークンを分けているのでしょうか?
- Q6
同僚がこう言いました。どこに問題があるか指摘してください。 「うちのアプリでは他社サービス連携のためにOAuthを使っている。連携を許可した後は、その他社サービスに関する操作は何でも自由にできるようになるから、細かい権限設定なんて気にしなくていいよ」