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

从Java Websphere应用程序确定网络用户,java,web-applications,websphere,Java,Web Applications,Websphere,我已经用Java1.6和Websphere构建了一个内部web应用程序。只有登录到域的用户才能访问应用程序。我需要能够访问使用该应用程序的任何人的用户名。我们正在使用Windows域控制器。我对Java相当陌生,不知道如何获取这些信息。任何帮助都将不胜感激。如果你需要更多的信息,我很乐意提供 谢谢 Andrew根据我对J2EE和web应用程序的了解,您通常可以获取主体对象,然后从中检索用户名。这就是你需要的吗 下面是一个示例,说明如何在doGet或doPost方法内部的servlet中执行此操作

我已经用Java1.6和Websphere构建了一个内部web应用程序。只有登录到域的用户才能访问应用程序。我需要能够访问使用该应用程序的任何人的用户名。我们正在使用Windows域控制器。我对Java相当陌生,不知道如何获取这些信息。任何帮助都将不胜感激。如果你需要更多的信息,我很乐意提供

谢谢


Andrew

根据我对J2EE和web应用程序的了解,您通常可以获取主体对象,然后从中检索用户名。这就是你需要的吗

下面是一个示例,说明如何在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)

这就是您要找的吗?

请参阅:


你的问题不是真正的Java,而是相关的。基本上,如果您想使用WAS的安全设施实现Web安全,则必须从配置WAS的LDAP中找到所有用户。如果您无法做到这一点,请对应用程序进行更改,使其实现自己定制的安全(身份验证和授权)机制


听起来好像有人为您的应用程序使用的servlet启用了JavaEE安全角色,可能还有SPNEGO。这是一个非常好的配置,但它确实不允许从默认LDAP中找不到的任何人访问任何内容。

以下是最终有效的代码

LdapClient ldapClient = new LdapClient();
Boolean foundUserInAD = Boolean.FALSE;
foundUserInAD = ldapClient.userIsInAD(userName, password);

if(foundUserInAD) {
    //Do stuff.
}

让我查一查。我会联系网络人员,看看他们是如何做到这一点的。可能需要几个小时,因为我比他们早8个时区。
LdapClient ldapClient = new LdapClient();
Boolean foundUserInAD = Boolean.FALSE;
foundUserInAD = ldapClient.userIsInAD(userName, password);

if(foundUserInAD) {
    //Do stuff.
}