2

API を保護するために Doorkeeper で OAuth2 を使用しています。

問題は、あるクライアントがユーザーを私の OAuth フローにリダイレクトするいくつかの異なるフローを持っていたことです。

彼は、ユーザーを私の OAuth フローにリダイレクトするときにいくつかのパラメーターを動的に追加し、私が彼のコールバック URL を呼び出すときにこれらのパラメーターを取得したいと考えています。このようにして、このコールバックがどのフローから発信されたかを知ることができます。

これは OAuth 2 で可能ですか? ドアキーパーと?どのように?

編集:

ヒントをくれた Zólyomi István に感謝します。認証エンドポイントを呼び出す前に状態パラメーターを設定し、コールバックでそれを取得しました。ただし、何も設定しなくても、明らかにランダムな文字列で状態パラメーターが返されることがわかりました。それが何であるか分かりますか?私は何かを台無しにしていないことを確認したいのですが...

4

1 に答える 1

3

まあ、状態パラメータを使用することは確かに解決策でした。リクエストに状態を追加し、コントロールがコードに返されたときにそれを取得するだけです。仕様によると:

state パラメーターは、リクエストとコールバックをリンクして、攻撃者が自分のリソースへのアクセスを承認し、攻撃者のトークンを使用してユーザーをだまして edirect に従うように仕向ける CSRF 攻撃を防ぐために使用されます。

どうやら ominauth oauth 2 は、CSRF 攻撃を検出するために使用されない限り、このパラメーターにランダムな値を割り当てます。

于 2012-11-08T09:33:29.770 に答える