【问题标题】:weblogic security realm with spring security filters带有弹簧安全过滤器的 weblogic 安全领域
【发布时间】:2012-08-21 06:48:48
【问题描述】:

我正在使用 spring security 3.1.1 进行身份验证。应用程序部署在 weblogic 服务器中,并启用了安全领域以访问数据源。对于我可以提供的 servlet <run-as> <role-name>testrole</role-name> </run-as>

我如何为 spring 安全过滤器做同样的事情。从过滤器访问数据源时出现此错误

:用户“”无权对资源“jdbc/DataSource”执行“reserve”操作

securityContext.xml

<context:annotation-config/>
<sec:http use-expressions="true" entry-point-ref="loginUrlAuthenticationEntryPoint" >
<sec:intercept-url pattern="/**" access="permitAll"/>
<sec:custom-filter position="LOGOUT_FILTER" ref="LogoutFilter" />
<sec:custom-filter position="BASIC_AUTH_FILTER" ref="AuthenticationFilter"/>
</sec:http>
<bean id="LogoutFilter" class="com.xxx.LogoutFilter">
<constructor-arg>
<bean class="com.xxx.LogoutSuccessHandler"></bean>
</constructor-arg>
<constructor-arg>
<list>
<bean class="com.xxx.LogoutHandler"></bean>
</list>
</constructor-arg>
</bean>

<bean id="AuthenticationFilter" class="com.xxx.AuthenticationFilter" >
<constructor-arg type="java.lang.String">
<value>/login.do</value>
</constructor-arg>
<property name="authenticationManager" ref="authenticationManager" />
<property name="authenticationSuccessHandler" ref="successHandler" />
<property name="authenticationFailureHandler" ref="failureHandler" />
</bean>

<bean id="loginUrlAuthenticationEntryPoint"
class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
<property name="loginFormUrl" value="/common/dologin.jsp" />
</bean>

<bean id="successHandler" class="com.xxx.AuthSuccessHandler"/>
<bean id="failureHandler" class="com.xxx.AuthFailureHandler"/>

<sec:authentication-manager alias="authenticationManager">
<sec:authentication-provider ref="jaasAuthenticationProvider" />
</sec:authentication-manager>


<bean id="jaasAuthenticationProvider"
class="com.xxx.JaasAuthenticationProvider">

<property name="callbackHandlers">
<list>
<bean class="com.xxx.security.callback.SecurityInfoProvider">
</bean>
</list>
</property>
<property name="authorityGranters">
<list>
<bean class="com.xxx.security.action.RoleUserAuthorityGranter" />
</list>
</property>
</bean>

</beans>

【问题讨论】:

  • 你能告诉我们你的 spring 安全上下文配置吗?

标签: spring security weblogic


【解决方案1】:

您是否可以考虑以下解决方案。

    <bean id="securedJndiTemplate" class="org.springframework.jndi.JndiTemplate">
         <property name="environment">
             <props>
                 <prop key="java.naming.provider.url">t3://myServerA:8001,myServerB:8002</prop>
                 <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
                 <prop key="java.naming.security.principal">weblogic</prop>
                 <prop key="java.naming.security.credentials">weblogic</prop>
             </props>
         </property>
    </bean>

    <bean id="targetDatasource" class="org.springframework.jndi.JndiObjectFactoryBean">
         <property name="jndiTemplate">
              <ref local="securedJndiTemplate"/>
         </property>
         <property name="jndiName">
              <value>myWeblogicJNDI</value>
         </property>
    </bean>

在您的 java 代码中尝试查找 targetDatasource。

希望这能解决您的问题。

【讨论】:

  • 我会采用这种方法,但是有没有其他方法可以将 web.xml 中定义的角色传递给请求?就像我为 servlet 定义它时发生的那样。
  • 我不知道类似的方式,比如对 servlet 使用 run-as 角色标签。如果您发现这种方式,请将其发布,以便我们通知。谢谢
猜你喜欢
  • 2017-03-18
  • 2017-03-18
  • 1970-01-01
  • 2019-01-12
相关资源
最近更新 更多