1

GWT アプリに OAuth2 認証メカニズムを実装しました。OAuth2 サーバーは、Spring フレームワーク 3.x に基づいています (Spring セキュリティ OAuth2 実装を使用)。

私は OAuth2 の「認証コード フロー」を使用してユーザーを認証しています (ただし、この場合は暗黙的なフローの方が適していた可能性があります)。したがって、最初に、ユーザーは OAuth2 サーバー認証ページにリダイレクトされ、資格情報を入力し、認証に成功すると、oauth コードを含む URL にリダイレクトされます。次に、OAuth2 サーバーからアクセス トークンを取得するために 2 回目の呼び出しを行います。

ここでの問題は、ユーザーがアプリケーションでページをブックマークして直接アクセスできるようにしたいということです。彼がすでに認証されている場合、彼はそれに直接アクセスできます(これ以上認証は必要ありません)。そうしないと、OAuth2 認証フローに入る必要がありますが、最終的には、最初にアクセスするつもりだったブックマークされたページにリダイレクトされます。

このページの URL を保存し、ユーザーが認証に成功した後にリダイレクトするにはどうすればよいですか?

任意の助けをいただければ幸いです。ありがとう!

編集済み

最初の URL リダイレクトは、javascript のdocument.location.hrefを介して行われます。

4

2 に答える 2

1

OAuth 2.0 Authorization Grantフローで元の URIを維持する方法は、リダイレクト エンドポイントがアクセス トークンの認証コードを交換した後、ユーザーをその URI にリダイレクトして戻すことができるように、パラメーターでそれを渡すことです。state

参考までに、これはまさに Google が OAuth 2.0 ドキュメントの例で提案していることです


元の答え:

問題は、プレースの URL のハッシュ部分を使用していることです。これはサーバーに送信されないため、OAuth2 サーバー認証ページへのリダイレクトには使用できません。

2 つ (おそらく 3 つ) の解決策があります。

  • 場所のハッシュの使用を停止し、HTML5 History に切り替えます。レベルで、またはgwt-pushstatePlaces API を使用する場合はカスタムのいずれかです。ただし、視聴者は制限されます: http://caniuse.com/historyHistoryPlaceHistoryHandler.Historian

  • HTTP リダイレクトの使用をやめ、代わりに JavaScript を使用して、ハッシュを OAuth2 に入れることができますredirect_uri。したがって、リダイレクトする代わりに、適切なスクリプト ビットを含むエラー ページを送信します。

  • 一部のブラウザーは、リダイレクト後にハッシュを URL に追加するため、OAuth2 サーバーはそれを (JavaScript で) 選択し、redirect_uri. これは、リダイレクトに使用される HTTP ステータス コードに依存する場合があります (経験上、301 で動作しますが、ここでは 301 は必要ありません)。テストが必要です。

于 2013-09-03T10:05:20.087 に答える
-2

これは、GWTのアクティビティと場所を使用して行うことができます。

于 2013-09-03T09:37:57.437 に答える