嗯,我能够通过启用追踪来追踪问题:
<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 ~) 中指定的模式)