【问题标题】:Converting XML security config to Java config将 XML 安全配置转换为 Java 配置
【发布时间】:2018-02-24 09:03:41
【问题描述】:

我正在尝试将以下基于 XML 的配置转换为基于 POJO 的配置:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
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-4.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-4.0.xsd">

<bean id="auth0EntryPoint" class="com.auth0.spring.security.auth0.Auth0AuthenticationEntryPoint" />

<!-- all urls starting with unsecured are -->
<security:http pattern="${auth0.securedRoute}" create-session="stateless"  entry-point-ref="auth0EntryPoint" use-expressions="false">
    <security:intercept-url pattern="${auth0.securedRoute}" access="ROLE_USER" />
    <security:custom-filter ref="auth0Filter" after="SECURITY_CONTEXT_FILTER" ></security:custom-filter>
    <security:csrf disabled="true"></security:csrf> 
</security:http>

<!-- Otherwise by default everything is secured -->
<security:http auto-config="true" use-expressions="true"  pattern="/**" create-session="stateless"  entry-point-ref="auth0EntryPoint">
    <security:intercept-url pattern="/**" access='permitAll' />
    <security:csrf disabled="true"></security:csrf>
</security:http>

<bean id="auth0Filter" class="com.auth0.spring.security.auth0.Auth0AuthenticationFilter">
    <property name="entryPoint" ref="auth0EntryPoint"></property>
</bean>

<bean id="auth0AuthenticationProvider" class="com.auth0.spring.security.auth0.Auth0AuthenticationProvider">
    <property name="clientSecret" value="${auth0.clientSecret}" ></property>
    <property name="clientId" value="${auth0.clientId}" ></property>
    <property name="securedRoute" value="${auth0.securedRoute}" ></property>
</bean>

<security:authentication-manager alias="authenticationManager">
    <security:authentication-provider ref="auth0AuthenticationProvider" />
</security:authentication-manager>

目前,我有这样的事情:

package com.simplymeasured.uam;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;

import com.auth0.spring.security.auth0.Auth0AuthenticationEntryPoint;
import com.auth0.spring.security.auth0.Auth0AuthenticationFilter;
import com.auth0.spring.security.auth0.Auth0AuthenticationProvider;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authenticationProvider());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .httpBasic().authenticationEntryPoint(auth0EntryPoint());
        http
            .csrf().disable()
            .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS);
        http
            .addFilter(auth0Filter());
        http
            .authorizeRequests()
            .anyRequest()
            .authenticated();
        System.out.println("CONFIGURE GETTING CALLED");
        super.configure(http);
    }


    public AuthenticationProvider authenticationProvider() {
        Auth0AuthenticationProvider  provider = new Auth0AuthenticationProvider();
        provider.setClientId("<auth0client>");
        provider.setClientSecret("<auth0secret>");
        provider.setSecuredRoute("/v2/**");
        return provider;
    }

    public Auth0AuthenticationFilter auth0Filter() {
        Auth0AuthenticationFilter auth0Filter = new Auth0AuthenticationFilter();
        auth0Filter.setEntryPoint(auth0EntryPoint());
        return auth0Filter;
    }

    public Auth0AuthenticationEntryPoint auth0EntryPoint() {
        Auth0AuthenticationEntryPoint auth0EntryPoint = new Auth0AuthenticationEntryPoint();
        return auth0EntryPoint;
    }


}

但它已经经历了数十次迭代,我只是没有在需要的地方排列任何东西。目前我正在处理一个问题,它声称过滤器链已经是一个已定义的 bean,因此没有请求通过。任何帮助或提示都是巨大的,我还没有找到 spring-security-4 的参考书,所以我只是想拼凑代码示例。

【问题讨论】:

    标签: spring-security


    【解决方案1】:

    我确信,一旦我发布我的问题,我注定只能获得相关的搜索结果:Why isn’t this Spring Security AuthenticationProvider found after being Java configured?

    【讨论】:

      猜你喜欢
      • 2015-05-30
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 2018-07-19
      • 2014-09-25
      相关资源
      最近更新 更多