Java 如何根据Windows广告对用户进行身份验证?
我有一个JSF Hibernate web应用程序。我需要根据Windows广告对用户进行身份验证,web应用程序应该只允许来自组X成员的登录,否则它应该重定向到错误页面。我如何配置它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
另外,我希望在所有页面上显示登录用户的名称,而不是服务器计算机的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看起来真的很有效,但正如我所看到的,它需要时间来实现,对我来说