9

Uygulamam Oracle Access Manager SSO'dan kullanıcı adı olan bir AUTH_USER istek üstbilgisi alıyor. Spring Security "Ek Konular" 2.2.1 "İhtiyacım olan" ın bir örneğine ihtiyaç duyduğum gibi görünüyor, ama tam bir çalışma örneği değil.İlkbahar önyüklemesinde ön kimlik doğrulama üstbilgisi tabanlı kimlik doğrulaması nasıl kurulur?

Aşağıdaki kod parçacıkları ek açıklama tabanlı bir yapılandırma değil, dokümanlar/örneklerdir.

Siteminder Örnek Yapılandırma - bir RequestHeaderAuthenticationFilter ve PreAuthenticatedAuthenticationProvider ve kullanıcıları arama için bir UserDetailsService ile XML kullanarak.

Bu harita Java tabanlı yapılandırmaya nasıl yapılır?

<security:http> 
    <!-- Additional http configuration omitted --> 
    <security:custom-filter position="PRE_AUTH_FILTER" ref="siteminderFilter" /> 
</security:http> 

<bean id="siteminderFilter" class="org.springframework.security.web.authentication.preauth.RequestHeaderAuthenticationFilter"> 
    <property name="principalRequestHeader" value="AUTH_USER"/> 
    <property name="authenticationManager" ref="authenticationManager" /> 
</bean> 

<bean id="preauthAuthProvider" class="org.springframework.security.web.authentication.preauth. PreAuthenticatedAuthenticationProvider"> 
    <property name="preAuthenticatedUserDetailsService"> 
    <bean id="userDetailsServiceWrapper" 
      class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper"> 
     <property name="userDetailsService" ref="userDetailsService"/> 
    </bean> 
    </property> 
</bean> 

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

Spring Security önbellek örneğinin tamamen farklı bir kurulumu var (XML yapılandırması daha da korkutucu oluyor). Ön filtre filtresinden veya başlık adının nasıl ayarlanacağından söz edilmez.

@Configuration 
@EnableWebMvcSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .antMatchers("/login","/resources/**").permitAll() 
       .anyRequest().authenticated() 
       .and() 
      .jee() 
       .mappableRoles("USER","ADMIN"); 
    } 
} 

yay çizme-web güvenli numune yerine WebSecurityConfigurerAdapter ait WebMvcConfigurerAdapter uzanır ve sadece temel formu tabanlı girişleri, ön auth AUTH_USER başlığından kimliği almak için nasıl hiçbir bilgi yok.

public class SampleWebSecureApplication extends WebMvcConfigurerAdapter { 

... omitted... 

    @Bean 
    public ApplicationSecurity applicationSecurity() { 
     return new ApplicationSecurity(); 
    } 

    @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER) 
    protected static class ApplicationSecurity extends WebSecurityConfigurerAdapter { 

     @Autowired 
     private SecurityProperties security; 

     @Override 
     protected void configure(HttpSecurity http) throws Exception { 
      http.authorizeRequests().anyRequest().fullyAuthenticated().and().formLogin() 
        .loginPage("/login").failureUrl("/login?error").permitAll(); 
     } 
    } 

} 

Birçok referanslar/makaleler okudum ama uygulama öncesi auth güvenliğinin nasıl yapılandırılacağı anlamaya çalışarak, cari kodu ve İlkbahar-boot ilgili çok sıkışıp görünmüyor.

@Configuration 
@EnableWebSecurity 
@EnableWebMvcSecurity 
@EnableGlobalMethodSecurity(jsr250Enabled = true, securedEnabled = true, prePostEnabled = true, proxyTargetClass = true) 
public class ApplicationSecurity extends WebSecurityConfigurerAdapter { 

    private static final Logger LOG = Logger.getLogger(ApplicationSecurity.class.getName()); 

    @Autowired 
    private UserService userService; // implements AuthenticationUserDetailsService... 

    @Override 
    public void configure(AuthenticationManagerBuilder auth) throws Exception { 
     LOG.info("configure autentication provider with custom userService"); 
     PreAuthenticatedAuthenticationProvider paaProvider = new PreAuthenticatedAuthenticationProvider(); 
     paaProvider.setPreAuthenticatedUserDetailsService(userService); 
     auth.authenticationProvider(paaProvider); 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     LOG.info("configure autentication filter"); 
     // ... 
    } 

} 
+0

Eğer çok yardımcı olacağını ne görüyorsanız davranış açıklanması: –

+0

Teşekkürler, Devon. Davranış, Spring notlarını başarılı olmak için ek açıklamalar yoluyla alamam. Yukarıdaki örneklerden kod parçacıkları. Varyasyonlar, yaratmam gerekenleri bile emin olmakta zorlanır: örn. WebSecurytConfigurerAdapter veya WebMvcConfigurerAdpater? Bir RequestHeaderAuthenticationFilter'ı yapılandırmaya çalıştığımda, AuthenticationManager ve AuthProvider ve DetailsService gibi birkaç yuvalanmış fasulye gerektirir, ancak HttpSecurity http nesnesinde ayrıca authprovider ve ayrıntılar hizmetini ayarlama yöntemleri vardır, ancak biraz farklı türlerde. – Tim

+0

Sadece ek açıklamaların ve yapılandırmaların anlaşılmasında çok yardımcı olan [Spring Security 3.2 Web Semineri] (http://spring.io/blog/2014/01/21/webinar-replay-spring-security-3-2) izledi. . Daha sonra, tüm [Spring Security Reference] 'ı okuyacağım (http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#preauth) – Tim

cevap

0

Bu

enjekte userService dayanan ön yetkilendirme güvenliğini yapılandırmak için benim yoludur. Bununla birlikte, açıklamanız AUTH_USER aldığınızı, ancak "principalRequestHeader" "SM_USER" olarak ayarlandığını söyledi.
İlgili konular