Spring安全性BASIC身份验证在Weblogic上提示用户/密码两次

时间:2014-01-06 17:23:35

标签: java spring spring-mvc spring-security weblogic12c

我正在尝试使用Spring安全性进行BASIC身份验证。

它在Tomcat上运行正常。 (如预期的那样提示一次。) 但是当我在Weblogic 12c上部署时,它会提示用户/密码对话两次。第二个对话框需要输入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>

弹簧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>                

弹簧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>

2 个答案:

答案 0 :(得分:2)

好像你必须使用适配器:

  

如Spring Security Reference,Container Adapters中所述   使Spring Security能够直接与所使用的容器集成   托管最终用户应用程序,在本例中为WebLogic Server。

     

实现了容器与Spring Security之间的集成   通过适配器。适配器提供容器兼容的用户   身份验证提供程序,并且需要返回容器兼容的   用户对象。

     

applicationContext-acegi-security.xml是for的配置文件   春天的安全。对于WebLogic Server,WeblogicAuthenticationFilter是   添加到applicationContext-acegi-security.xml中的过滤器列表中。   此过滤器负责将Weblogic主体转换为   Spring GrantedAuthority主题,基于mapper。映射器是   配置为WeblogicAuthenticationFilter的属性,以及它   在创建时注入。

http://docs.oracle.com/cd/E24329_01/web.1211/e24975/security.htm

答案 1 :(得分:0)

在web.xml文件中添加以下代码:

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