从Java Websphere应用程序确定网络用户

时间:2011-04-06 08:12:18

标签: java web-applications websphere

我有一个使用Java 1.6和Websphere构建的内部Web应用程序。只有登录到域的用户才能访问该应用程序。我需要能够访问使用该应用程序的任何人的用户名。我们正在使用Windows域控制器。我是Java的新手,无法弄清楚如何获取这些信息。任何帮助,将不胜感激。如果您需要更多信息,我很乐意提供。

谢谢,

安德鲁

4 个答案:

答案 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中找不到的任何人访问任何内容。