Экспорт и импорт файла ключей для единого входа между WAS и Liberty
Могу ли я экспортировать файл ключа LTPA из WebSphere Application Server 8.0.x, затем импортировать файл на сервер профилей Liberty и использовать функциональность SSO? (16.0.0.3)
Я попробовал это, и это, кажется, не работает. Я получаю экран входа в систему вместо автоматического входа в систему.
Следующая конфигурация выполняется в server.xml:
...
<ltpa keysFileName="${server.output.dir}/ltpakeyexport.keys" keysPassword="ltpatest" expiration="400" />
<webAppSecurity ssoCookieName="ltpav2" ssoDomainNames="myintranet.net"/>
<basicRegistry id="basic" ignoreCaseForAuthentication="true" realm="realmNameFromWAS">
...
2 ответа
Ключи LTPA можно экспортировать из консоли WebSphere Application Server. Глобальная безопасность> LTPA -> Единый вход в систему между ячейками
Укажите пароль и имя файла для экспорта ключей LTPA.
Эти ключи LTPA можно использовать на сервере профилей Liberty, используя тот же пароль, который указан выше при экспорте.
Если вы пытаетесь использовать единый вход (SSO) между WebSphere Application Server и профилем Liberty, вам также необходимо убедиться, что "имя области" одинаково для реестра пользователей (LDAP) в обоих случаях. Имя области можно указать в профиле Liberty, указав realm="MyRealm" в определении ldapRegistry.
Хм, я смог отследить проблему, включив трассировку:
<logging traceSpecification="com.ibm.ws.security.*=all:com.ibm.ws.webcontainer.security.*=all"/>
Я нашел следующее исключение:
com.ibm.ws.security.registry.EntryNotFoundException: uid=KARSTEN,type=Person,scope=LTPA does not exist
at com.ibm.ws.security.registry.basic.internal.BasicRegistry.getUserSecurityName(BasicRegistry.java:506)
Таким образом, пользователь не может быть автоматически аутентифицирован, потому что идентификатор пользователя "uid=KARSTEN,type=Person,scope=LTPA" не существует. Это правда, существует только пользователь "KARSTEN". Кажется, есть проблема с регулярным выражением, потому что используемый шаблон
java.util.regex.Matcher[pattern=([^:]+):(\QMyRealm\E)/(.*) region=0,49 lastmatch=user:MyRealm/uid=KARSTEN,type=Person,scope=LTPA]
соответствует не только идентификатору пользователя, но и всей строке, включая "type=Person" и т. д.
Когда я создаю этого пользователя в базовом реестре:
<basicRegistry id="basic" ... >
...
<user name="uid=KARSTEN,type=Person,scope=LTPA" password="test" />
...
</basicregistry>
все работает как положено!
Кажется, это ошибка в WLP (или наша инфраструктура единого входа WebSphere 8.0.x предоставляет нестандартный идентификатор для пользователей).
((Шаблон, указанный в com.ibm.ws.security.AccessIdUtil.setSecurityService():38 ~))