Windows域中的用户名

时间:2011-08-09 16:00:42

标签: active-directory windowsdomainaccount jespa

我正在开发一款使用Jespa进行透明SSO的应用。我正在使用NtlmSecurityProvider。在我的代码中,当我得到用户名时,如下所示:“DOMAINNAME \ username”

e.g。

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

打印此:MYDOMAIN \ myusername

这是我的问题:

是否总是这样,域名是用户名?或者它只是我们域中的用户帐户的设置方式?就像,如果我切换到不同的Windows域,我是否可能只获得没有域名和反斜杠的用户名?

谢谢!

2 个答案:

答案 0 :(得分:1)

我在serverfault.com上问了这个问题。我从Squillman得到了一个非常好的答案。 (谢谢!)这是:

“这可能是Jespa人员的一个支持问题。输出依赖于他们API的行为。

一般而言,Windows的最佳做法是始终使用DOMAIN \用户名格式或用户名@域格式。

如果您担心格式更改,那么我建议您编写一个类/方法/实用程序,它知道如何解析getRemoteUser()的结果,并在您认为必要时将部分返回给您的应用程序。然后,如果它确实发生了变化,您只需更改一段代码即可修复您的应用。“

我编写了一个方法来解析getRemoteUser()的结果,就像他建议的那样,到目前为止它运行良好。

答案 1 :(得分:1)

这是高度可配置的。请参阅Jespa操作员手册中NtlmSecurityProvider属性部分中的account.canonicalForm属性。您可以将用户名设置为BUSICORP \ sbackus或sbackus@busicorp.local,或者仅使用sbackus或浏览器提供的任何内容(无规范化)。

例如,如果您希望getRemoteUser仅返回HttpSecurityService属性文件中的用户名而不返回域集jespa.account.canonicalForm = 2。但在多域环境中,使用合格的帐户名称可能相当重要!