Сервер идентификации WSO2 - как связать хранилище пользователей с поставщиком услуг для аутентификации?

Мы пытаемся создать приложение, которое будет использовать сервер идентификации WSO2 для аутентификации с SSO, инициированным IDP.

Я опробовал пример travelocity.com в обучающих материалах WSO2IS, и я могу понять, что тип аутентификации "по умолчанию" как локальная исходящая аутентификация использует основное хранилище пользователей для выполнения аутентификации:

введите здесь описание изображения

Мне нужно понять, как мне сопоставить UserStore для работы с конкретным поставщиком услуг, я выполняю единый вход по инициативе IDP?

Могу ли я управлять этим из консоли управления WSO2? ИЛИ мне нужно изменить веб-приложение конечной точки аутентификации?


person Samrat    schedule 01.11.2017    source источник


Ответы (2)


Он не ограничивается ПЕРВИЧНЫМ хранилищем пользователей, и если у вас есть несколько вторичных хранилищ пользователей, он будет пытаться аутентифицировать пользователя в каждом пользовательском хранилище, пока аутентификация не будет успешной.

Ограничение хранилища пользователей определенным поставщиком услуг в настоящее время недоступно в Identity Server, но вы можете написать собственный аутентификатор и выполнить это требование. Вот руководство о том, как написать собственный локальный аутентификатор. В основном, что вам нужно сделать, это переопределить метод processAuthenticationResponse и выбрать хранилище пользователя соответственно.

person Jayanga Kaushalya    schedule 02.11.2017
comment
Привет, Джаянга! Не могли бы вы поделиться точной строкой кода, чтобы получить конкретное хранилище пользователя в методе processAuthenticationResponse ?? Предполагая, что у меня есть вторичный пользовательский магазин CustomUserStore. - person Agam; 06.11.2017
comment
Вы можете использовать следующий код, чтобы получить ПЕРВИЧНОЕ хранилище пользователей, а из него вы также можете получить вторичные. UserStoreManager userStoreManager = (UserStoreManager) BasicCustomAuthenticatorServiceComponent.getRealmService (). GetTenantUserRealm (tenantId) .getUserStoreManager (); - person Jayanga Kaushalya; 07.11.2017

Основываясь на описанном вами требовании, я хотел бы предложить другой подход для достижения того же.

В WSO2 Identity Server у вас есть возможность задействовать политику в потоке аутентификации. Таким образом, используя политику, мы можем ограничить, какие пользовательские хранилища разрешены для конкретного поставщика услуг.

Ознакомьтесь с https://medium.com/@Pushpalanka/application-wise-authorization-wso2-identity-server-user-store-per-service-provider-dfea5f9ad758 для подробного объяснения.

person farasath    schedule 10.11.2017