我想配置Tomcat以便能夠連接到AD並相應地對用戶進行身份驗證。爲Tomcat配置Kerberos和模擬
另外,我還想使用客戶端憑證調用一些Web服務(在這種情況下爲Share Point)。
到目前爲止,我已成功配置Tomcat以使用SPNEGO身份驗證,如教程http://tomcat.apache.org/tomcat-7.0-doc/windows-auth-howto.html中所述。請注意,我使用了Tomcat的SPNEGO認證(不是Source Forge's或Waffle)。
我沒有使用Source Forge的實現,因爲我想保持簡單並使用Tomcat的開箱即用。另外,我希望Tomcat處理所有的身份驗證和授權,並使用SPNEGO作爲WEB.XML
中的身份驗證方法和Tomcat的JNDI領域進行授權。
另外我還沒有使用WAFFLE,因爲這只是Windows。
我使用CXF作爲我的Web服務堆棧。據當時http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html#ClientHTTPTransport%28includingSSLsupport%29-SpnegoAuthentication%28Kerberos%29了CXF文件,所有你需要做的Web服務進行身份驗證(在我的情況,共享點)是使用:
<conduit name="{http://example.com/}HelloWorldServicePort.http-conduit"
xmlns="http://cxf.apache.org/transports/http/configuration">
<authorization>
<AuthorizationType>Negotiate</AuthorizationType>
<Authorization>CXFClient</Authorization>
</authorization>
</conduit>
和配置的Jaas.conf CXFClient(在我的情況,在Tomcat的服務器JAAS配置的位置,這樣我jass.conf
樣子:
CXFClient {
com.sun.security.auth.module.Krb5LoginModule required client=true useTicketCache=true debug=true;
};
com.sun.security.jgss.krb5.initiate {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
principal="HTTP/[email protected]"
useKeyTab=true
keyTab="C:/Program Files/Apache/apache-tomcat-7.0.27/conf/tomcatsrv.keytab"
storeKey=true
debug=true;
};
com.sun.security.jgss.krb5.accept {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
principal="HTTP/[email protected]"
useKeyTab=true
keyTab="C:/Program Files/Apache/apache-tomcat-7.0.27/conf/tomcatsrv.keytab"
storeKey=true
debug=true;
};
然而,當我調用Web服務,這是服務的用戶名下調用(在AD和配置即Tomcat的用戶名tomcatsrv.keytab
),而不是客戶端的用戶名(如duncan.attard)。
所以我的問題是:是否有某種方式可以委託客戶的用戶名(或使用某種模擬)到CXF,以便當我調用Share Point的Web服務時(例如,我想使用Copy.asmx上傳文件),文件上傳爲duncan.attard
而不是tomcat.srv
。
謝謝大家,非常感謝您的幫助。