java - 如何在不使用 LDAP 的情况下在 java 中获取客户端系统的用户名?

标签 java javascript tomcat authentication

我正在使用 eclipse 和“Tomcat 服务器”开发一个 j2ee 应用程序,在该应用程序中,我想在我的登录页面获取客户端系统的用户名,而不使用“LDAP”。

我已经使用了 System.getenv("username")但它给我的是服务器系统的用户名,而不是客户端系统的用户名。

然后我使用了 "request.getRemoteUser()" ,但它给了我“NULL”值。 同时我也尝试“request.getUserPrincipal()”、“request.getAuthType()”。 但这也给了我“NULL”值。当我探索它为什么给我“空”值时,我发现没有为应用程序定义的身份验证级别。

因此,我将以下代码放入我的应用程序的 web.xml 中:

<security-constraint> 

<web-resource-collection>
    <web-resource-name>demo_trial_application</web-resource-name>
    <url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
    <role-name>tomcat</role-name>
</auth-constraint>
<user-data-constraint>
    <transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
  </security-constraint>

  <login-config>
<auth-method>BASIC</auth-method>
  </login-config>

在 web.xml 中修改后(就像上面一样),当我通过 URL 执行我的应用程序时,一个对话框打开并提示输入我在 tomcat-users.xml 中声明的 tomcat-user 的用户名和密码。 结果它显示“tomcat”作为用户名。

因此通过上述过程,我没有得到客户端系统的用户名。

现在,除了服务器端,我还尝试了 javascript 代码来获取客户端系统的用户名,如下代码所示:

var winNetwork=new ActiveXObject("WScript.Network");
        alert("User Name :"+winNetwork.UserName);

var winShell=new ActiveXObject("WScript.Shell");
        alert(winShell.ExpandEnvironmentStrings("%USERNAME%")); 

但是上面的代码只能在 Internet Explorer 上运行,因为我使用了“ActiveXObject”并且它只能在 Internet Explorer 上运行。 因此上面的 javascript 代码会引发浏览器兼容性问题。

那么请您告诉我“如何通过 Java 或 Javascript 访问客户端系统的用户名?”,但我不想为此使用“LDAP”。

最佳答案

你不能。出于安全原因,您在浏览器中访问的 Web 应用程序将无法访问有关客户端计算机的此类信息。 您可以坚持使用 IE 并使用 ActiveX,要求用户给您用户名,或者使用您自己的身份验证来识别用户。

关于java - 如何在不使用 LDAP 的情况下在 java 中获取客户端系统的用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19402106/

相关文章:

javascript - 在同一标签中显示图像或 swf

Tomcat 请求资源不可用错误,即使文件存在

java - 使用多个源文件夹(作为将大型 Java 项目转换为 Maven 的中间步骤)

java - 带别名的 Hibernate 查询

java - Maven:testCompile 失败多点

java - 如何使用 server.xml 配置我的 tomcat 应用程序?

javascript - 用于使用 javascript/jquery 创建模板的模板 sdk

javascript - Google Charts 上升 1,不连续

java - 如何从未被 hibernate 映射的表中添加带 hibernate 的外键?

spring - 由于 Tomcat ServerContainer,Spring-Websocket 的 ClassCastException