《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文件中。更多的信息可以查看:https://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
最後更新:2017-05-19 12:04:23