Статьи

Пользовательский аутентификатор для WSO2 Identity Server (WSO2IS) SSO Войти

При входе в систему единого входа вы можете подключить к WSO2IS различные пользовательские аутентификаторы. Есть два основных типа. Один из них — локальные аутентификаторы, а другой — Федеративные аутентификаторы. Федеративные аутентификаторы необходимы, когда вам нужно предоставить перенаправления на основе браузера другому IDP. В качестве примера можно привести Salesforce, Google, Facebook IDP. (Подробнее здесь ) В других случаях мы можем реализовать локальный аутентификатор.

Аутентификатор по умолчанию для WSO2IS — это Базовый аутентификатор, и он также является локальным аутентификатором, который аутентифицирует конечного пользователя с подключенным хранилищем пользователей, используя предоставленные имя пользователя и пароль.

В этом посте попробуем реализовать локальный аутентификатор для WSO2IS, расширив базовый аутентификатор.
Давайте возьмем следующие два примера требований.

1. Пользователи, которые входят в систему с помощью «OpenId Connect», должны пройти аутентификацию в хранилище пользователей и должны быть авторизованы. При авторизации пользователь должен убедиться, что ему назначена определенная роль с именем «openidConnectRole».

2. Пользователи из приложения (поставщика услуг) «soasecurity.org» должны пройти аутентификацию в хранилище пользователей и должны быть авторизованы. При авторизации пользователь должен убедиться, что пользователь содержит определенный атрибут. Например, пользователь содержит письмо с доменом «soasecurity.org»

Шаг 1 . Расширьте базовый аутентификатор и внедрите новый аутентификатор.

Поскольку нас беспокоит только авторизация, аутентификация может происходить как на уровне обычного аутентификатора. Нам нужно добавить логику авторизации после аутентификации. Поэтому нам нужно расширить только один метод в Basic Authenticator, который называется «processAuthenticationResponse ()»

Также нам нужно изменить имя аутентификатора, расширив методы «getFriendlyName () » и «getName ()» .

Вы можете оштрафовать источник аутентификатора расширения отсюда .

Шаг 2 . Создайте комплект OSGI из вашего расширенного аутентификатора. Пример проекта можно найти здесь . Вы можете построить проект, используя maven3

Шаг 3. Разверните комплект OSGI на WSO2 Identity Server (или APIM), скопировав в каталог / repository / components / dropins .

Шаг 4. Вам нужно отредактировать страницу /repository/deployment/server/webapps/authenticationendpoint/login.jsp с новым именем аутентификатора.

Потому что в настоящее время он установлен на «BasicAuthenticator». Вы можете изменить его следующим образом, добавив проверку «BasicCustomAuthenticator»

if(localAuthenticatorNames.contains("BasicAuthenticator") | localAuthenticatorNames.contains("BasicCustomAuthenticator")){

 if(localAuthenticatorNames.size()>0 && (localAuthenticatorNames.contains("BasicAuthenticator") || } else if(localAuthenticatorNames.size()>0 && (localAuthenticatorNames.contains("BasicAuthenticator") || localAuthenticatorNames.contains("BasicCustomAuthenticator"))) {localAuthenticatorNames.contains("BasicCustomAuthenticator"))) {

Шаг 5 . (Необязательно) Если вам нужно сделать это аутентификатором по умолчанию для всех поставщиков услуг, вы можете настроить его с помощью файла /repository/conf/identity/service-providers/default.xml .

Этот файл по умолчанию настроен на «BasicAuthenticator» … Вы можете изменить его на «BasicCustomAuthenticator», изменив следующие два свойства.

<Name>BasicAuthenticator</Name>
 <DisplayName>basicauth</DisplayName>

в к

<Name>BasicCustomAuthenticator</Name>
 <DisplayName>BasicCustom</DisplayName>

Шаг 6. Перезагрузите сервер.

Шаг 7 . Вы можете войти в консоль управления и настроить новый аутентификатор для каждого поставщика услуг, используя «Local & Outbound Authentication Configuration»

customauth1

Шаг 8. Попробуйте.

Вы можете отладить пользовательский источник аутентификатора, запустив сервер в режиме отладки.

>sh wso2server.sh -debug 5005

Спасибо за прочтение…!!!