WAS Liberty配置OIDC认证后LTPA Cookie未生成问题咨询
问题原因排查及解决方案
核心原因
- Liberty的
openidConnectClient-1.0特性默认优先使用OIDC专属会话Cookie(即你观测到的WAS_*、WASOidc*前缀Cookie)维护认证状态,仅在需要跨传统WAS/Liberty节点做SSO的场景下才会主动下发LTPA Cookie,纯单应用OIDC认证场景默认不会生成LTPA Cookie。 - 你配置的
webAppSecurity中ssoDomainNames="app1.com",如果当前访问应用的域名和app1.com不匹配(比如本地测试用localhost、IP地址,或者域名是其他后缀),即使Liberty生成了LTPA Cookie,也会因为域名不匹配被浏览器拒收。 - OIDC认证流程结束后首次跳转回应用时,部分场景下Liberty只会先下发OIDC专属会话Cookie,LTPA Cookie需要等到下一次向受保护资源发起请求时才会下发。
修复方案
- 强制开启OIDC场景LTPA Cookie下发:在你的
openidConnectClient配置中追加inboundPropagation="supported"属性,修改后配置如下:
<openidConnectClient id="oidcBridge" clientId="removed" clientSecret="removed" discoveryEndpointUrl="https://my-op.com/.well-known/openid-configuration" signatureAlgorithm="RS256" jwkEndpointUrl="https://my-op.com/.well-known/jwks.json" disableLtpaCookie="false" allowDefaultSsoCookieName="true" inboundPropagation="supported"> </openidConnectClient>
该配置会让Liberty在OIDC认证成功后,同时生成OIDC专属会话Cookie和LTPA Cookie。
2. 校验域名匹配规则:如果是本地测试场景,可临时删除webAppSecurity中的ssoDomainNames="app1.com"配置,或者将你当前访问的域名添加到ssoDomainNames列表中,避免Cookie因域名不匹配被浏览器拦截。
3. 验证触发逻辑:完成上述配置修改后,清空浏览器原有Cookie重新走一遍OIDC认证流程,认证完成后刷新一次受保护的应用页面,再检查Cookie列表即可看到LTPA Cookie。
4. 异常排查:如果修改后仍未生成LTPA Cookie,可在server.xml中添加如下日志配置,输出安全相关trace日志定位问题:
<logging traceSpecification="com.ibm.ws.security.*=all=enabled" traceFileName="trace.log" />
内容的提问来源于stack exchange,提问作者Jatin
相关产品推荐
相关产品推荐

