2011-08-09 75 views
1

我正在使用Jespa做一個透明SSO的應用程序。我正在使用NtlmSecurityProvider。在我的代碼中,當我得到用戶名如下所示:「DOMAINNAME \ username」Windows域中的用戶名

例如,

<% out.println(request.getRemoteUser()); %> 

打印此:MYDOMAIN \名爲myUsername

我的問題是:

將它總是看起來像,與域名的用戶名?還是僅僅是我們在我們的域中的用戶帳戶的設置?就像,如果我切換到不同的Windows域,我可能會得到沒有域和反斜槓的用戶名嗎?

謝謝!

回答

1

我在serverfault.com上問了這個問題。我從Squillman得到了一個非常好的答案。 (謝謝!)這就是:

「這可能更多的是對Jespa鄉親支持問題的輸出是對他們的API的行爲依賴

一般來說,雖然用於Windows的最佳實踐。是否總是使用DOMAIN \用戶名格式或用戶名@域格式

如果您擔心格式改變,那麼我建議您編寫一個類/方法/實用程序,它知道如何解析getRemoteUser()並根據需要將這些部分返回給您的應用程序,如果它發生了變化,您只需更改一段代碼即可修復您的應用程序。「

我寫了一個方法來解析getRemoteUser()的結果,就像他所建議的一樣,目前效果很好。

1

這是高度可配置的。請參閱Jespa操作手冊的NtlmSecurityProvider屬性部分中的account.canonicalForm屬性。你可以使用像BUSICORP \ sbackus或[email protected]這樣的用戶名,或者只是sbackus或者瀏覽器提供的任何名稱(無規範化)。

例如,如果您希望getRemoteUser僅返回HttpSecurityService屬性文件中的用戶名而不是域集jespa.account.canonicalForm = 2。但在多域環境中,使用合格的帳戶名稱可能相當重要!