В 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 для программного входа в систему.
Вполне возможно, что я совершенно сбился с пути. Так что я буду очень признателен за любое предложение.