質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Q&A

1回答

734閲覧

OAuthにおけるリダイレクトURIのメリットについて

nyanmaru1234

総合スコア0

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

0グッド

2クリップ

投稿2021/11/20 12:46

現在OAuthについて勉強しているのですが、認可コードフローにおけるリダイレクトURIのメリットがよく分からず悩んでいます。
認可サーバではリダイレクトURIを把握しているので、直接認可コードをリダイレクトURIとして登録されている先に渡せるのではないかなと考えており、ユーザを経由することで、認可コードが露呈する可能性が高まっているような気がするのですが、このリダイレクトには何か意図があるのでしょうか。
ユーザをアプリに戻したいのであれば、リダイレクトだけさせて認可コードは裏で認可サーバからクライアントに渡せばいいように思うのですが、この流れだと何か問題があるのでしょうか。(クライアント側でユーザと認可コードの紐付けが必要ですが、stateパラメータのようにクライアントと認可サーバで一意の値を共有することはできると思うので、認可サーバからクライアント側に認可コードを渡すときにstateも一緒に渡せば紐付けは可能であるように思いました。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

実装の詳細がわからないので想像を含めて書きますが、通常のOAuthとは別パターンのCSRFというか、オープンリダイレクトのような攻撃ができるような気がします。

  1. 攻撃者はクライアント(のサーバー)から認可サーバーへのリダイレクト先のURL(state付き)を取得する
  2. 攻撃者は先のURLをメール等で被害者に閲覧させる
  3. 被害者は、URLが正規のサイトのものであるので、そこで自分のIDやパスワードを入力する
  4. 認可サーバー側の認証処理等が正常に終了して、リダイレクトしてクライアントに戻る

一連の処理が終わったあと、元々のstateは攻撃者のものであるので、攻撃者側のセッションに認可コード(およびアクセストークン)が渡るように思います。
通常のOAuthにおけるCSRFは、攻撃者の権限を被害者に使わせるものであるのに対して、上記は、被害者の権限を攻撃者が使えるようになるので、影響はさらに大きいように思えます。

詳細の実装が不明なので、上記の検討には抜け漏れがあるかもしれません。アイデアを持つこと自体はよいことですが、認証に関わることなので、詳細を検討しないと評価はできません。

投稿2022/01/04 09:20

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問