legacy-knowledge-base
公開されました Jul. 2, 2025

SAML SSO をバイパスする動作が変更されました

written-by

Kanchan Bisht

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

問題

  • ユーザーのサブセットがSaml SSOをバイパスし、Liferay SPに直接ログインすることを意図しているユースケースがあります。 Liferay 7.2 dxp-8 では、ユーザーは次の URL を使用してこれを達成しました。

    https://pilots.up.edu/home?p_p_id=com_liferay_login_web_portlet_LoginPortlet&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&saveLastPath=false&_com_liferay_login_web_portlet_LoginPortlet_mvcRenderCommandName=%2Flogin%2Flogin&_com_liferay_login_web_portlet_LoginPortlet_redirect=%2Fgroup%2Ftest

    ユーザーは、dxp-10 フィックスパックに更新した後、動作が変更され、上記の URL が SSO リダイレクトを開始することに気付きました。

    再現手順:
    1. SAML IdP および SP
    2 用に 2 つの Liferay 7.2 dxp-10 インスタンスをセットアップします。 SP で、プライベート ページ 'pp'
    3 を追加します。 コントロール パネルで > インスタンス設定 > インスタンス構成 > 一般 > ホーム URL を /group/guest/pp に変更
    4. サインアウトし、次の URL を使用して SSO をバイパスします (注: localhost:7080 はテスト ケースの SP です)。

    http://localhost:7080/web/guest/home?p_p_id=com_liferay_login_web_portlet_LoginPortlet&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&saveLastPath=false&_com_liferay_login_web_portlet_LoginPortlet_mvcRenderCommandName=%2Flogin%2Flogin&_com_liferay_login_web_portlet_LoginPortlet_redirect=%2Fgroup%2Fguest%2Fpp

    予想される動作: SSO がバイパスされ、ユーザーは SP に直接ログインできる
    観測された動作: SSO が開始され、IdP へのリダイレクトが発生する

Environment

  • Liferay DXP 7.2 と Fix Pack 10

解決策

  • 予想される動作は Liferay dxp-8 で発生するため、これらの修正は動作の変更に関連している可能性があります: LPS-121766 および LPS-98456
  • ただし、URL の最後のセクションを削除することは、ここで提供できる回避策です:
    &_com_liferay_login_web_portlet_LoginPortlet_redirect=%2Fgroup%2Fguest%2Ftest
    SSO ログインをスキップできるように見え、デフォルトのランディング ページがそのページに設定されている場合、ユーザーは目的のプライベート ページに転送されます。
  • ユーザーは、プライベート ページにリダイレクトする必要があるユーザーのサブセットに対してカスタマイズを実装できます。 これを行う方法は、プロパティ「key=login.events.post」のコンポーネントを作成し、それらのユーザーが URL でログインした後に目的のページにリダイレクトされるようにすることです。
    https://pilots.up.edu/home?p_p_id=com_liferay_login_web_portlet_LoginPortlet&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&saveLastPath=false&_com_liferay_login_web_portlet_LoginPortlet_mvcRenderCommandName=%2Flogin%2Flogin

追加情報

  • 顧客は、次のコンポーネントを使用して、それらのユーザーをリダイレクトするロジックを実装する場合があります
    • @Component(
      immediate = true, 
      property = { "key=" + PropsKeys.LOGIN_EVENTS_POST }, 
      service = LifecycleAction.class)
      
      public class LoginPostAction implements LifecycleAction {
did-this-article-resolve-your-issue

legacy-knowledge-base