我有一个使用Java 1.6和Websphere构建的内部Web应用程序。只有登录到域的用户才能访问该应用程序。我需要能够访问使用该应用程序的任何人的用户名。我们正在使用Windows域控制器。我是Java的新手,无法弄清楚如何获取这些信息。任何帮助,将不胜感激。如果您需要更多信息,我很乐意提供。
谢谢,
安德鲁
答案 0 :(得分:1)
这是最终有效的代码。
LdapClient ldapClient = new LdapClient();
Boolean foundUserInAD = Boolean.FALSE;
foundUserInAD = ldapClient.userIsInAD(userName, password);
if(foundUserInAD) {
//Do stuff.
}
答案 1 :(得分:0)
根据我所知的J2EE和Web应用程序,您通常可以获取Principal对象,然后从中检索用户名。这就是你需要的吗?
以下是如何在doGet或doPost方法中的servlet中执行此操作的示例:
//here is the HttpServletRequest object. retrieve user from it.
Principal principal = request.getUserPrincipal();
//now get the name out of it.
String userName = principal.getName();
获取密码要复杂得多,但如果您只需要用户名,那么这应该是他们“登录”您的WebSphere服务器的名称(即传递给它的任何ID)。
这就是你要找的东西吗?
答案 2 :(得分:0)
请参阅:javax.servlet.http.HttpServletRequest.getRemoteUser()
Returns the login of the user making this request, if the user has been authenticated, or null if the user has not been authenticated.
答案 3 :(得分:0)
您的问题不是Java,而是与WAS相关。基本上,如果要使用WAS for Web Security的安全设施,则必须从配置WAS的LDAP中找到所有用户。如果您无法做到这一点,请对应用程序进行更改,以便它实现自己的自定义安全性(身份验证和授权)机制。
听起来有人为您的应用程序使用的servlet启用了JavaEE安全角色,也可能是SPNEGO。这是非常好的配置,但它实际上不允许从默认LDAP中找不到的任何人访问任何内容。