以下是該場景。我是在AD域中的Web服務器上運行的代碼。有些客戶已連接到我。如何讓客戶的用戶名無需客戶在瀏覽器中填寫表單?必須在Web服務器端使用Java技術。獲取連接到Web服務器的客戶端的用戶名
編輯:
我最終使用於以下鏈接描述的春季安全協商篩選。有一個教程可用。使用request.getPrincipal()。getName()從一個servlet中提供用戶名。
以下是該場景。我是在AD域中的Web服務器上運行的代碼。有些客戶已連接到我。如何讓客戶的用戶名無需客戶在瀏覽器中填寫表單?必須在Web服務器端使用Java技術。獲取連接到Web服務器的客戶端的用戶名
編輯:
我最終使用於以下鏈接描述的春季安全協商篩選。有一個教程可用。使用request.getPrincipal()。getName()從一個servlet中提供用戶名。
您需要設置Spring Security Kerberos extension - 這是您在Spring Security 3中完成描述的唯一方法。它支持SPNEGO協商,但需要在服務器上進行一些設置(以及知識SPNEGO和Kerberos如何工作)。
沒有太多的文檔 - 但Mike 1.0M2的示例應用程序非常棒,涵蓋了大多數常見的場景,包括自動化的SPNEGO身份驗證。
爲SPNEGO的關鍵是要建立一個自定義的AuthenticationEntryPoint
- 你需要有一個自定義的Spring bean要做到這一點,如下所示:
<bean id="kerbEntryPoint" class="org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint" />
<bean id="kerbAuthenticationProcessingFilter" class="org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter">
<property name="authenticationManager" ref="authenticationManager" />
</bean>
...還有更多的bean會除此之外還需要(同樣,請參閱帶有Kerberos擴展的樣本)。如果您與Spring Security進一步協作或需要確切的詳細信息(因爲涉及到一些bean/config位,有些配置知識會對您有所幫助,例如您是否使用<http>
命名空間樣式)。
除了這個選項,你將不得不建立一個類似的SPNEGO身份驗證類型(如使用WAFFLE,正如你所建議的) - other SO questions涵蓋了這個很好。
最後,您可能會更好地將Tomcat與支持SPNEGO或NTLM的另一個Web服務器(如Microsoft IIS或Apache Web Server)相關聯,其中包括mod_spnego。
希望其中的一個想法能爲你效勞!
謝謝彼得。我更喜歡象帶有或不帶有Kerberos的Waffle這樣的解決方案,所以我認爲我會堅持。無論如何,感謝您的幫助和鏈接。 – KyleM 2011-05-05 13:36:42
只是爲了澄清 - 如果您在描述的AD域中,那麼您可能已經運行了Kerberos - W2K3,並且通常默認啓用它。 – 2011-05-05 17:05:45
您的用戶使用哪種瀏覽器?如果IE;有一個簡單的解決方案:
<html>
<script type="text/javascript">
var WinNetwork = new ActiveXObject("WScript.Network");
alert(WinNetwork.UserName);
</script>
</html>
如果您使用Tomcat,然後使用WAFFLE。
@DA .. :) ..順便說一句,原因是我使用的是tomcat和spring。 – KyleM 2011-04-28 22:58:11
沒有用戶名。您的請求本質上沒有意義,除非您在AD域中。 – SLaks 2011-04-28 23:03:17
@Slaks我在一個AD域中。對不起,不包括那些重要的信息。 – KyleM 2011-04-28 23:07:29