0

我能否从 WebSphere Application Server 8.0.x 导出 LTPA 密钥文件,然后将该文件导入 Liberty Profile Server 并使用 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">
...
4

2 回答 2

0

LTPA 密钥可以从 WebSphere Application Server 控制台导出。全局安全 > LTPA -> 跨单元单点登录

提供密码和文件名以导出 LTPA 密钥。

这些 LTPA 密钥可以在 Liberty Profile Server 上使用,在导出时使用与上面指定的相同的密码。

如果您尝试在 WebSphere Application Server 和 Liberty Profile 之间使用单点登录 (SSO),您还需要确保两者上的用户注册表 (LDAP) 的“领域名称”相同。可以通过在 ldapRegistry 定义中指定 realm="MyRealm" 在 Liberty 配置文件中指定领域名称。

于 2016-10-04T15:27:21.107 回答
0

嗯,我能够通过启用追踪来追踪问题:

<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)

因此,用户无法自动进行身份验证,因为用户 ID“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]

不仅匹配用户 ID,还匹配整个字符串,包括“type=Person”等。

当我在基本注册表中创建此用户时:

<basicRegistry id="basic" ... >
...
<user name="uid=KARSTEN,type=Person,scope=LTPA" password="test" />
...
</basicregistry>

一切都按预期工作!

似乎是 WLP 中的一个错误(或者我们的 WebSphere 8.0.x SSO 基础设施为用户提供了一个非标准标识符)。

((com.ibm.ws.security.AccessIdUtil.setSecurityService():38 ~) 中指定的模式)

于 2016-10-06T06:52:52.930 回答