2

私が到達した結論は、リダイレクトがliferayで認証しようとしているが、どういうわけか探しているものを取得できず、openssoに戻り、これが無限に繰り返されるということです。ここで同様の問題が報告されていることがわかります。残念ながら、うまくいきませんでした。

その後、liferay コードをデバッグすることにし、com.liferay.portal.servlet.filters.sso.opensso.OpenSSOUtil と com.liferay.portal.servlet.filters.sso.opensso.OpenSSOFilter にブレーク ポイントを設定しました。このコードが書かれていることを理解する方法は、最初に OpenSSOUtil.processFilter() メソッドに行き、liferay で構成した openSSO 設定情報を取得し、後でメソッド OpenSSOUtil.isAuthenticated() を呼び出して認証されているかどうかを確認することです。この特定の実装は基本的に、送信された Cookie 情報を読み取り、メソッド OpenSSOUtil._setCookieProperty() を呼び出して、liferay に Cookie プロパティを設定しようとします。ここで失敗します。HttpServletRequest オブジェクトを使用して liferay クラス com.liferay.util.CookieUtil から [iPlanetDirectoryPro] という名前の Cookie を読み取ろうとしますが、取得するのはすべて NULL です。

以下はクラスのコードですcom.liferay.util.CookieUtil

public static String get(HttpServletRequest request, String name) {
    Cookie[] cookies = request.getCookies();

    if (cookies == null) {
        return null;
    }

    for (int i = 0; i < cookies.length; i++) {
        Cookie cookie = cookies;

        String cookieName = GetterUtil.getString(cookie.getName());

        if (cookieName.equalsIgnoreCase(name)) {
            return cookie.getValue();
        }
    }

    return null;
}

opensso が送信した Cookie を liferay が見つけられない理由を誰か教えてください。Cookie 値の有効化に関する Opensso 設定に関連している場合は、OpenSSO で次の場所に移動しました: [構成] -> [サーバーとサイト] -> -> [セキュリティ] -> [Cookie] -> [Cookie 値のエンコード] をオンにします ([はい] に設定)

何が機能するか: このループが実行されているときに、別のタブを開き、明示的にアプリケーションにログインします。アプリケーションからサインアウトすると、opensso からもサインアウトされます。これは私には奇妙です。

詳細については、このリダイレクト ループが発生している間、次の URL でこれらの情報セットが得られます

http://opensso.ple.com:9090/openam/identity/getCookieNameForToken

 string=iPlanetDirectoryPro

http://opensso.ple.com:9090/openam/identity/isTokenValid

  boolean=true
4

0 に答える 0