В Liferay, как получить информацию о поставщике удостоверений и использовать ее для программного запуска единого входа

Я новичок в Liferay и SSO, и мне нужно сделать очень специфическую вещь. Я использую Liferay DXP 7.4, поэтому у меня есть Liferay SAML Connector 2.0. В частности, мне нужно настроить Liferay в качестве поставщика услуг и добавить более одного подключения к поставщику удостоверений, и я сделал это через пользовательский интерфейс.

Совершенно непонятно, как использовать правильный Identity Provider. Не похоже, что есть что-то, что делает это автоматически.

Поскольку у меня есть поставщик удостоверений для каждого «FriendlyURL», я думаю, я могу использовать groupId для идентификации конкретного поставщика удостоверений (устанавливая имя поставщика удостоверений для groupId).

Теперь в реализации пользовательского действия входа в систему (класс, реализующий MVCActionCommand), похоже, не хватает того, что я прокомментировал в следующем коде:

      @Override
protected void doProcessAction(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
    HttpServletRequest request = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
    HttpServletResponse response = PortalUtil.getHttpServletResponse(actionResponse);

    long groupId = themeDisplay.getScopeGroupId();
    IdpConnection idpConnection = getIdpConfigByName(groupId); // <-- no idea 
    ....
    loginWithIdp(request, response, username, password, idpConnection); // <-- no idea
}

В этом коде я действительно не знаю:

  • если существует класс, отображающий соединение Idp (в коде я назвал его «IdpConnection»),
  • как получить информацию об idp по имени,
  • как использовать информацию idp для программного входа в систему.

Вполне возможно, что я совершенно сбился с пути. Так что я буду очень признателен за любое предложение.

0 ответов

Другие вопросы по тегам