Java Spring security基本身份验证在Weblogic上提示用户/密码两次

Java Spring security基本身份验证在Weblogic上提示用户/密码两次,java,spring,spring-mvc,spring-security,weblogic12c,Java,Spring,Spring Mvc,Spring Security,Weblogic12c,我正在尝试使用Spring security使用基本身份验证 它在Tomcat上运行良好。(按预期提示一次。) 但是当我在WebLogic12c上部署时,它会提示用户/密码对话框两次。第二个对话框需要输入weblogic管理控制台用户名密码。只有输入这两个凭证,才能登录 有什么建议吗 web.xml <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Applicatio

我正在尝试使用Spring security使用基本身份验证

它在Tomcat上运行良好。(按预期提示一次。) 但是当我在WebLogic12c上部署时,它会提示用户/密码对话框两次。第二个对话框需要输入weblogic管理控制台用户名密码。只有输入这两个凭证,才能登录

有什么建议吗

web.xml

            <!DOCTYPE web-app PUBLIC
             "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
             "http://java.sun.com/dtd/web-app_2_3.dtd" >

            <web-app>
                <display-name>Archetype Created Web Application</display-name>

                <context-param>
                    <param-name>contextConfigLocation</param-name>
                    <param-value>/WEB-INF/spring-security.xml</param-value>
                </context-param>

                <filter>
                    <filter-name>springSecurityFilterChain</filter-name>
                    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
                </filter>

                <filter-mapping>
                    <filter-name>springSecurityFilterChain</filter-name>
                    <url-pattern>/*</url-pattern>
                </filter-mapping>

                <listener>
                    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
                </listener>

                <servlet>
                    <servlet-name>spring</servlet-name>
                    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                </servlet>

                <servlet-mapping>
                    <servlet-name>spring</servlet-name>
                    <url-pattern>/</url-pattern>
                </servlet-mapping>
            </web-app>

Web应用程序创建的原型
上下文配置位置
/WEB-INF/spring-security.xml
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
org.springframework.web.context.ContextLoaderListener
春天
org.springframework.web.servlet.DispatcherServlet
春天
/
spring-servlet.xml

            <beans xmlns="http://www.springframework.org/schema/beans"
                xmlns:context="http://www.springframework.org/schema/context"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

                <context:component-scan base-package="com.jai.spring.security.controller" />
                <import resource="spring-security.xml" />

                <bean id="viewResolver"
                    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="prefix" value="/" />
                    <property name="suffix" value=".jsp" />
                </bean>

            </beans>                

spring-security.xml

            <beans:beans xmlns="http://www.springframework.org/schema/security"
                xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
                http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd">

                <authentication-manager>
                    <authentication-provider>
                        <user-service>
                            <user name="jay" password="jay" authorities="ROLE_USER" />
                        </user-service>
                    </authentication-provider>
                </authentication-manager>

                <http create-session="stateless">
                    <intercept-url pattern="/**" access="ROLE_USER" />
                    <http-basic />
                </http>
            </beans:beans>

似乎您必须使用适配器:

如Spring安全参考中所述,容器适配器 使Spring Security能够直接与所使用的容器集成 托管最终用户应用程序,在本例中为WebLogic Server

实现了容器和Spring安全性之间的集成 通过适配器。适配器为用户提供与容器兼容的接口 身份验证提供程序,并且需要返回一个兼容的容器 用户对象

applicationContext-acegi-security.xml是的配置文件 春季安全。对于WebLogic服务器,WeblogicAuthenticationFilter是 已添加到applicationContext-acegi-security.xml中的筛选器列表。 此筛选器负责将Weblogic主体转换为 Spring授予的权威主题,基于mapper。地图绘制者是 配置为WeblogicAuthenticationFilter的属性,并且 在创建时注入


在web.xml文件的节之后添加下一个代码:

<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>

客户端证书

当它要求您进行身份验证时,您正在调用哪个url?您在哪里部署了应用程序?管理服务器或其他server@Andres我尝试过,而且在weblogic上两者的行为都是一样的。但是两者在Tomcat上的行为都是正确的。坏主意……在生产模式下,Admin服务器是为Admin保留的……现在创建一个专用的服务器,并尝试通过Spring和weblogic分别重新拦截请求。此问题中提供的解决方案将适用于您。