3

シングル サインオンのシナリオは次のとおりです。

  1. ポータル (http) で Web アプリのリンクをクリックすると、SSO 統合ページが表示されます。
  2. sso 統合ページがブラウザーにしばらく表示されます。その後、自動的に (http) 隠しフィールドを使用して Web アプリにデータを投稿します。
  3. Web アプリがリクエストを受け取り、リクエスト パラメーターからユーザー情報を抽出する
  4. Web アプリは sso 統合への Web サービス呼び出しを行い、ユーザーがアクティブかどうかを確認します
  5. 肯定的な応答を受信すると、Web アプリの表示ページ。

この関数をオーバーライドした春のセキュリティで AbstractPreAuthenticatedProcessingFilter を拡張する事前認証フィルターを使用しています。

protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) {
    String username = getUserName(request);  // Line1
   // String username = "userA";             // Line2 
    return username;                         // Line 3
}

関数 getUserName は、手順 3 と 4 を実行します。

Line 2 (Line 1 ではなく) を使用すると、すべてが正常に機能し、ユーザーは Web アプリのページを表示できます。行 1 を使用してデバッグすると、例外なく行 2 と同じようにユーザー名が抽出されますが、ユーザーは HTTP エラー コード 404 を取得します。行 3 では、両方のシナリオで同じ値が得られます。

なぜこれが起こっているのか、エラーはどこにあるのか、まったくわかりません。:(誰かが私を正しい方向に向けることができますか?

更新:私が受け取った Http 404 応答は次のようなものです。

Response Headers    Value
Set-Cookie  JSESSIONID=b8f8615855da6e92d780f12e2bbe; Path=/<webapp>; Secure; HttpOnly

また、ブラウザでページを更新すると、ユーザーはログインしてページを表示できます。更新の場合、jsessionid は url パラメータとして存在しませんが、2 行目を使用している場合、jsessionid は url パラメータとして存在しますか? 私はこの行動を理解することができません。

4

0 に答える 0