Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据Windows广告对用户进行身份验证?_Java_Windows_Hibernate_Jsf_Authentication - Fatal编程技术网

Java 如何根据Windows广告对用户进行身份验证?

Java 如何根据Windows广告对用户进行身份验证?,java,windows,hibernate,jsf,authentication,Java,Windows,Hibernate,Jsf,Authentication,我有一个JSF Hibernate web应用程序。我需要根据Windows广告对用户进行身份验证,web应用程序应该只允许来自组X成员的登录,否则它应该重定向到错误页面。我如何配置它 另外,我希望在所有页面上显示登录用户的名称,而不是服务器计算机的Windows用户的名称。为此,我尝试了System.property(“user.name”),但这只返回服务器名称的Windows用户的名称。您需要在servletcontainer上创建一个所谓的“LDAP领域”。如何做到这一点取决于所使用的s

我有一个JSF Hibernate web应用程序。我需要根据Windows广告对用户进行身份验证,web应用程序应该只允许来自组X成员的登录,否则它应该重定向到错误页面。我如何配置它


另外,我希望在所有页面上显示登录用户的名称,而不是服务器计算机的Windows用户的名称。为此,我尝试了
System.property(“user.name”)
,但这只返回服务器名称的Windows用户的名称。

您需要在servletcontainer上创建一个所谓的“LDAP领域”。如何做到这一点取决于所使用的servletcontainer。由于您没有提供有关所使用的servletcontainer的任何详细信息,因此很难给出合适的答案,但一般来说,只要阅读servletcontainer关于领域配置的文档就足够了。以Tomcat为例,它是。对于Tomcat,您需要一个。更多详细信息请参见

然后,您需要通过在
web.xml
中声明相应的
条目,将web应用程序配置为需要登录特定页面。您可以在相同的
web.xml
中的
条目中配置登录和错误页面


安全的
/安全的/*
. 另见

至于获取登录用户的名称,只需在JSF上下文或servlet上下文中使用即可。您可以在JSF EL中访问它,如下所示:

欢迎,#{request.remoteUser}


system属性确实返回服务器自己的用户,这在这种情况下毫无意义

您需要在servletcontainer上创建一个所谓的“LDAP领域”。如何做到这一点取决于所使用的servletcontainer。由于您没有提供有关所使用的servletcontainer的任何详细信息,因此很难给出合适的答案,但一般来说,只要阅读servletcontainer关于领域配置的文档就足够了。以Tomcat为例,它是。对于Tomcat,您需要一个。更多详细信息请参见

然后,您需要通过在
web.xml
中声明相应的
条目,将web应用程序配置为需要登录特定页面。您可以在相同的
web.xml
中的
条目中配置登录和错误页面


安全的
/安全的/*
. 另见

至于获取登录用户的名称,只需在JSF上下文或servlet上下文中使用即可。您可以在JSF EL中访问它,如下所示:

欢迎,#{request.remoteUser}


system属性确实返回服务器自己的用户,这在这种情况下毫无意义

我建议您看看的开源项目。我们有一个基于GWT的webadmin和一个REST-API web应用程序,该应用程序使用Kerberos作为身份验证协议,对LDAP服务器执行身份验证(它还支持简单身份验证)

我将在这里概述我们的工作,但请看一下代码:

  • 我们使用JAAS+
    Krb5LoginModule
    对Kerberos执行登录操作(您必须通过
    System.setProperties
    设置Kerberos相关信息,如KDC,或使用krb5.conf文件)

  • 登录成功后,我们运行一个
    PrivilegedAction
    (参见JAAS API)

  • 我们的
    PrivilegedAction
    使用GSSAPI(这是用于Kerberos的,您也可以使用SIMPLE),并且由于成功登录而具有正确的凭据

此时,您将根据充当Ldap服务器和KDC的Active Directory进行身份验证

这个解决方案是独立于容器的,甚至可以从一个简单、独立的Java程序中工作(当然,您需要定义一个适当的JAAS conf文件。如果您像我们一样使用JBoss AS 7.1.x,
standalone.xml
解决了这个问题


代码位于ovirt engine/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker
,您可以通过git clone从ovirt获取它。

我建议您看看的开源项目。我们有一个基于GWT的webadmin和一个重新执行身份验证的REST-API web应用程序nst LDAP服务器,使用Kerberos作为身份验证协议(它还支持简单身份验证)

我将在这里概述我们的工作,但请看一下代码:

  • 我们使用JAAS+
    Krb5LoginModule
    对Kerberos执行登录操作(您必须通过
    System.setProperties
    设置Kerberos相关信息,如KDC,或使用krb5.conf文件)

  • 登录成功后,我们运行一个
    PrivilegedAction
    (参见JAAS API)

  • 我们的
    PrivilegedAction
    使用GSSAPI(这是用于Kerberos的,您也可以使用SIMPLE),并且由于成功登录而具有正确的凭据

此时,您将根据充当Ldap服务器和KDC的Active Directory进行身份验证

这个解决方案是独立于容器的,甚至可以从一个简单、独立的Java程序中工作(当然,您需要定义一个适当的JAAS conf文件。如果您像我们一样使用JBoss AS 7.1.x,
standalone.xml
解决了这个问题


代码驻留在
ovirt engine/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker
,您可以通过git clone从ovirt获取它。

您需要更加清晰。英语可能不是您的第一语言,但这一点非常不清楚。如果您使用Tomcat:您需要更加清晰。英语可能不是你的第一语言,但这是非常不清楚的。如果你使用的是Tomcat:你的answaer看起来真的很有效,但正如我所看到的,它需要时间来实现,对我来说