Open Liberty配置SPNEGO后未获取用户GSSCredentials的问题排查
Open Liberty SPNEGO配置问题:未收到客户端委托GSS凭证警告
问题详情
执行SPNEGO登录时,控制台出现如下警告:
[WARNING ] CWWKS4310W: The client delegated GSSCredentials were expected to be received but were not found for user: user1@EXAMPLE.COM
当前server.xml中的SPNEGO配置:
<spnego servicePrincipalNames="HTTP/liberty1.example.com" krb5Config="C:/krb5.ini" krb5Keytab="C:/krb5.keytab" authFilterRef="myAuthFilter" />
预期结果是在主题中看到user1的GSS凭证(例如:Private Credential: [GSSCredential: user1@EXAMPLE.COM 1.2.840.113554.1.2.2 Initiate),而非上述警告。
解决方案
核心配置补充
该警告的本质是Open Liberty期望获取客户端委托的GSS凭证,但当前配置未开启凭证委托功能,同时客户端也未发送相关凭证。需要在spnego配置中添加两个关键属性:
allowDelegation="true":开启服务器接收客户端凭证委托的权限delegateToServer="true":指定服务器保留客户端的委托凭证,以便后续使用
修改后的完整SPNEGO配置:
<spnego servicePrincipalNames="HTTP/liberty1.example.com" krb5Config="C:/krb5.ini" krb5Keytab="C:/krb5.keytab" authFilterRef="myAuthFilter" allowDelegation="true" delegateToServer="true" />
额外验证要点
除了服务器端配置,还需确认以下环节:
- 客户端配置:浏览器需允许凭证委托。比如IE/Edge需将Liberty服务器地址加入「本地Intranet」区域,并启用「允许委派信任的网站」;Firefox需在
about:config中设置network.negotiate-auth.delegation-uris包含服务器地址。 - Kerberos KDC配置:服务主体
HTTP/liberty1.example.com必须被配置为允许委派(在AD中可通过设置msDS-AllowedToDelegateTo属性实现,或创建主体时指定委派权限)。 - Kerberos配置一致性:客户端与服务器的krb5.ini配置需一致,确保默认Realm、KDC地址等参数正确。
完成上述配置后重启服务器,重新登录即可在主题中看到预期的GSS凭证,警告也会消失。
内容的提问来源于stack exchange,提问作者Zach Hein
相关产品推荐
相关产品推荐

