如何解决Java GSS SPNEGO Auth 强制使用 (3) NT-HOST-NAME 的 GSSName
无论哪种类型的 GSSName
I specify for
peer 与 GssManager.createContext
建立上下文,GSS 都会覆盖我的 GSSName
类型以输入 (3) KRB5-NT-HOST-NAME
。
如果通过 native
选择 -Dsun.security.jgss.native=true
实现,下面的相同逻辑将遵循选择的 GSSName / Peer,但这不能执行 kinit
。
代码示例显示 peer
设置为 NT-PRINCIPAL
GSSManager gssManager = GSSManager.getInstance();
GSSContext context = gssManager.createContext(
gssManager.createName("serveruser@DOMAIN.COM",Oid("1.2.840.113554.1.2.2.1"));,// peer,KRB-NT-PRINCIPAL
new Oid("1.3.6.1.5.5.2"),// mechanism is SPNEGO
credential,GSSContext.DEFAULT_LIFETIME
);
错误的票据片段
解码 Kerberos 票证显示 NT-PRINCIPAL
未获批准
"ticket": {
"tkt-vno": 5,"realm": "DOMAIN.COM","sname": {
"name-type": "NT-SRV-HST (3)",# !!! NOT WHAT I SELECTED!
"name-string": [
"serveruser"
]
},
带有 -Dsun.security.jgss.native=true
集的好票片段
"ticket": {
"tkt-vno": 5,"sname": {
"name-type": "NT-PRINCIPAL (1)","name-string": [
"serveruser"
]
},
我还通过 Python 测试了来自 Native GSS 库的完全相同的功能,它也尊重我的 GSSName
类型并生成了正确的票证。
如果需要,很乐意提供任何其他上下文。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。