問題
-
ユーザーのサブセットが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 {
-