我有一些WebSphere实例已连接到Active Directory以进行LDAP身份验证,有些则没有连接。
我有一个servlet来处理身份验证。它会调用httpServletRequest.getRemoteUser()
并检查这是null
。这在部署到启用LDAP的服务器时有效,但在未启用LDAP的实例(如开发人员工作站)上,则表示用户从未进行过身份验证。
如何以编程方式检查容器中是否启用了LDAP?
答案 0 :(得分:1)
App Server不关心注册表,无论是LDAP服务器,数据库还是别的。
如果服务器中没有打开安全性,那么它将始终返回null,因为用户尚未通过身份验证。
正如 home 所建议的那样,如果您想在开发环境中使用用户名,则应该使用默认文件注册表打开安全性。
规范说明了这一点:
http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html
getRemoteUser
java.lang.String getRemoteUser() 如果用户已经过身份验证,则返回发出此请求的用户的登录名;如果用户尚未通过身份验证,则返回null。是否随每个后续请求一起发送用户名取决于浏览器和身份验证类型。与CGI变量REMOTE_USER的值相同。 返回: 指定发出此请求的用户的登录名的String,如果用户登录未知,则为null