我正在开发一款使用Jespa进行透明SSO的应用。我正在使用NtlmSecurityProvider。在我的代码中,当我得到用户名时,如下所示:“DOMAINNAME \ username”
e.g。
<% out.println(request.getRemoteUser()); %>
打印此:MYDOMAIN \ myusername
这是我的问题:
是否总是这样,域名和是用户名?或者它只是我们域中的用户帐户的设置方式?就像,如果我切换到不同的Windows域,我是否可能只获得没有域名和反斜杠的用户名?
谢谢!
答案 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。但在多域环境中,使用合格的帐户名称可能相当重要!