《HttpClient官方文档》4.8 SPNEGOKerberos验证

    xiaoxiao2024-05-08  8

    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

    转载自 并发编程网 - ifeve.com

    相关资源:Kerberos在HTTP中的应用
    最新回复(0)