0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】OAuth認証の理解

Posted at

OAuth認証において登場人物とフローの理解が曖昧だったので、AI様と整理してみた。

私:

以下、自分の理解です。採点して。

OAuth認証の説明において、登場人物は主にクライアントアプリ、認可サーバー、リソースサーバーの3つ。(リソースサーバーにはAPIが設けられている)
1. クライアントアプリが認可サーバーにアクセストークンの発行を依頼
2. 認可サーバーがトークンを生成するための許可をユーザーに求める
3. ユーザーが許可する
4. 認可サーバーはトークンを生成し、クライアントアプリに返す
5. クライアントアプリがトークンでリソースサーバー(API)にアクセス要求
6. リソースサーバーでトークンの検証
7. 検証がOKであれば要求通りの動作を行う

AI様の回答:

あなたの理解は大枠として成立していて、OAuth の全体像をほぼ掴めている。ただし、細部でいくつか重要な点が省略されているため、厳しめに採点すると 70〜75点 程度。
以下、どこが正しくて、どこが不正確かを整理する。

正しい点

•	登場人物をクライアントアプリ / 認可サーバー / リソースサーバーの3つに分けている点
•	「クライアントアプリが、リソースサーバーではなく認可サーバーからトークンを取る」という流れ
•	「ユーザーの許可が必要」という点
•	「クライアントはアクセストークンを使ってリソースサーバーにアクセスする」という役割分担
•	「リソースサーバーはトークンを検証してから処理を行う」という理解

大枠は問題ない。

誤り・不足している点

以下が点数を落としている部分。

1.クライアントは“いきなり”アクセストークンを要求しない

あなたの文では

クライアントアプリが認可サーバーにアクセストークンの発行を依頼

となっているが、認可コードフローではこれは誤り。
実際には「認可コード」を要求する。
アクセストークンではない。

流れは次の通り:
• クライアント「認可コードをください」 → 認可サーバ
• クライアント「認可コードを渡すのでアクセストークンをください」 → トークンサーバ
2段階に分かれている。

2.認可サーバーは「トークンを生成する許可」をユーザーに求めるのではない

より正確には、
• 認可サーバーは「このクライアントに、あなたのデータへのアクセス権を渡してよいか?」をユーザーに確認している。
「トークン生成の許可」ではなくアクセス権の“委譲”をユーザーに確認している。

3.認可サーバーとトークンサーバーを分けておくとより正確

実装上、認可エンドポイントとトークンエンドポイントは別。
あなたの説明だと「認可サーバーがそのままトークン発行」になっているが、実際は
• 認可エンドポイント(ユーザー操作が発生)
• トークンエンドポイント(バックエンド間の通信)
という2つに役割分担されている。
OAuthを深く理解するとき、この分離は重要。

70〜75点になった理由

大枠の流れは把握できているが、OAuth 2.0 の“本質的な部分”である
• 認可コードの存在
• 「アクセス権の委譲」という概念
• 認可エンドポイントとトークンエンドポイントの分離
が省略されていたため。

修正版

あなたの理解に最小限の修正を入れると次のようになる。

1. クライアントアプリは、まず認可サーバーに「認可コード」を要求する。
2. 認可サーバーはユーザーに、クライアントが自分のデータへアクセスすることを許可するか確認する。
3. ユーザーが許可すると、認可サーバーはクライアントに認可コードを返す。
4. クライアントはその認可コードをトークンサーバーに送ってアクセストークンを要求する。
5. トークンサーバーはアクセストークン(必要ならリフレッシュトークンも)を発行して返す。
6. クライアントは得たアクセストークンを用いてリソースサーバーのAPIへアクセスする。
7. リソースサーバーはトークンを検証し、問題なければ要求されたリソースを返す。

以上.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?