При входе в систему единого входа вы можете подключить к 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»
Шаг 8. Попробуйте.
Вы можете отладить пользовательский источник аутентификатора, запустив сервер в режиме отладки.
>sh wso2server.sh -debug 5005
Спасибо за прочтение…!!!