Пользовательский аутентификатор для WSO2 —

#authentication #wso2 #saml-2.0 #wso2is

#аутентификация #wso2 #saml-2.0 #wso2-identity-server

Вопрос:

Я пытаюсь создать полностью настраиваемый внешний аутентификатор для WSO2 IS. Идея заключается в следующем: 1. Поставщик услуг перенаправляет пользователя в WSO2 IS с запросом SAML2 (конфигурация входящей аутентификации = конфигурация веб-входа в систему SAML2). 2. Конфигурация локальной аутентификации для указанного поставщика услуг является моим пользовательским аутентификатором. 3. Пользовательский аутентификатор перенаправляет пользователя в службу аутентификации. 4. Пользователь входит в систему. 5. Служба входа перенаправляет пользователя обратно в WSO2 — пользовательский аутентификатор (используя тот же URL, что и раньше «/samlsso».

Проблема в том, что параметры, используемые и возвращаемые службой входа, являются полностью проприетарными, т.Е.. не SAML2. Однако WSO2IS ожидает запрос SAML2 при доступе к пользовательскому аутентификатору.

Как я могу создать пользовательский аутентификатор, который использует полностью проприетарные параметры для службы входа в систему, но обычный SAML2 для поставщика услуг?

Ответ №1:

На шаге 5 он должен быть перенаправлен на конечную точку / commonauth. Таким образом, будет определен правильный контекст из метода getContextIdentifier в вашем аутентификаторе.

Вы можете использовать Facebook authenticator в качестве примера [1]

[1] https://github.com/wso2/carbon-identity/blob/master/components/application-authenticators/org.wso2.carbon.identity.application.authenticator.social/src/main/java/org/wso2/carbon/identity/application/authenticator/social/facebook/FacebookAuthenticator.java

Комментарии:

1. Спасибо, URL-адрес «commonauth» был ключевым. Также я обнаружил, что мне нужно вручную передать параметр «sessionDataKey» (взятый из AuthenticationContext.getContextIdentifier ()), чтобы обработчик ответа WSO2 распознал сеанс. Я бы хотел, чтобы документация по продукту была немного понятнее об этом.