《HttpClient官方文档》4.8 SPNEGO/Kerberos验证
SPNEGO(简单并且受保护的GSSAPI协商机制)被设计为当两端都不知道他人可以提供,或使用什么时所提供的验证服务。它可以包装其他的机制,但是目前HttpClient4.2是按照Kerbros单独设计的。
4.8.1SPNEGO在HttpClient中的支持
SPNEGO验证方案被Sun Java 1.5以上版本兼容。1.6以上的Java版本被强烈推荐,因为它已经完全支持了SPNEGO验证。
Sun JRE 提供了相关支持类来处理几乎所有的Kerb er和SPNEGO的令牌。这意味着很多步骤是关于GSS类的。SPNegoScheme 是一个简单的处理解析令牌并且对头进行读和写的类。
最好的开始的方式是抓示例中KerberosHttpClient.java文件,并且尝试使它工作。这会由很多问题会产生,但是如果幸运的话它会没有多大问题的工作。它也提供了一些输出用来调试。
在Windows中它默认使用登录凭证;它可以被覆盖通过使用’knit’ 比如$JAVA_HOME\bin\knit testuser@AD.EXAMPLE.NET 对测试和调试非常有帮助。删除kinit创建的缓存文件退回到windows的Kerberos缓存。
4.8.2 GSS/JAVA Kerberos 步骤
这个文档假定你使用的是Windows系统,但是大部分的信息在Unix上也适用。
org.ietf.jgss 类有很多可配置的参数,主要是在 krb5.conf/krb5.ini文件中。更多的信息可以查看:http://web.mit.edu/kerberos/krb5-1.4/krb5-1.4.1/doc/krb5-admin/krb5.conf.html.
4.8.3 login.conf 文件
接下来是Windows XP针对IIS和JBoss Negotiation 模块的配置。
系统属性java.security.auth.login.config可以用来指定login.conf文件。
login.conf文件看起来应该像下面这样:
com.sun.security.jgss.login {
com.sun.security.auth.module.Krb5LoginModule required client=TRUE useTicketCache=true;
};
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required client=TRUE useTicketCache=true;
};
com.sun.security.jgss.accept {
com.sun.security.auth.module.Krb5LoginModule required client=TRUE useTicketCache=true;
};
4.8.5 krb5.conf / krb5.ini 文件
如果没有特别指定,将会使用系统默认值。通过设定系统属性java.security.krb5.conf来指定一个用户krb5.conf文件。krb5.conf文件看起来像是下面这样:
[libdefaults]
default_realm = AD.EXAMPLE.NET
udp_preference_limit = 1
[realms]
AD.EXAMPLE.NET = {
kdc = KDC.AD.EXAMPLE.NET
}
[domain_realms]
.ad.example.net=AD.EXAMPLE.NET
ad.example.net=AD.EXAMPLE.NET
4.8.5 Windows特殊配置
为了允许Windows使用当前用户的凭证,系统属性javax.security.auth.useSubjectCredsOnly必须被设置为false 并且应该添加并且正确设置Windows的注册表项allowtgtsessionkey来使会话凭证在Kerberos Ticket-Granting票中发送。
下面是在Windows Server 2003 和 Windows 2000 SP4中要求的注册表项设定:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Value Name: allowtgtsessionkey
Value Type: REG_DWORD
Value: 0x01
下面是在Windows XP SP2中要求的注册表项设定:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\
Value Name: allowtgtsessionkey
Value Type: REG_DWORD
Value: 0x01
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的