2015-09-08 6 views
6

Konwertuję starszą wersję aplikacji Spring na aplikację Adnotacje Spring4. W pierwszym kroku przekonwertowałem wszystkie adnotacje oparte na konfiguracji XML na java. Aplikacja działa dobrze, ale jedynym problemem jest konfiguracja minder witryny xml. Nie wiem, jak przekonwertować poniższą konfigurację Siteminder, która jest dostępna w web.xml na język Java.jak przekonwertować konfigurację minder witryny xml przy użyciu Spring4 Java config

<login-config> 
    <auth-method>CLIENT-CERT</auth-method> 
    <realm-name>SiteMinderRealm</realm-name> 
</login-config> 

Powyższa konfiguracja SiteMinder jest w web.xml,

Czy ktoś może mi powiedzieć jak napisać konfigurację opartą na Java dla powyższej xml w AppInitializer.java

mój web.xml i jej odpowiedni podstawiony AppInitializer.java kod jest taki jak pokazano poniżej

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id="WebApp_ID" version="3.0"> 

    <display-name>SpringWebMVCApp</display-name> 
    <context-param> 
     <param-name>contextClass</param-name> 
     <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> 
    </context-param> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>com.helloworld.config.AppConfig</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>DispatcherServlet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextClass</param-name> 
      <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>DispatcherServlet</servlet-name> 
     <url-pattern>/rest/</url-pattern> 
    </servlet-mapping> 

    <login-config> 
     <auth-method>CLIENT-CERT</auth-method> 
     <realm-name>SiteMinderRealm</realm-name> 
    </login-config> 
</web-app> 

AppInitializer.java

public class AppInitializer implements WebApplicationInitializer { 
    @Override 
    public void onStartup(ServletContext servletContext) throws ServletException { 
     WebApplicationContext context = getContext(); 
     servletContext.addListener(new ContextLoaderListener(context)); 
     ServletRegistration.Dynamic dispatcher = servletContext.addServlet("DispatcherServlet", new DispatcherServlet(context)); 
     dispatcher.setLoadOnStartup(1); 
     dispatcher.addMapping("/rest/"); 
    } 

    private AnnotationConfigWebApplicationContext getContext() { 
     AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); 
     context.register(AppConfig.class); 
     return context; 
    } 
} 

Aktualizacja 1

public class AppInitializer extends WebSecurityConfigurerAdapter implements WebApplicationInitializer { 
    @Override 
    public void onStartup(ServletContext servletContext) throws ServletException { 
     WebApplicationContext context = getContext(); 
     servletContext.addListener(new ContextLoaderListener(context)); 
     ServletRegistration.Dynamic dispatcher = servletContext.addServlet("DispatcherServlet", new DispatcherServlet(context)); 
     dispatcher.setLoadOnStartup(1); 
     dispatcher.addMapping("/rest/"); 
    } 

    private AnnotationConfigWebApplicationContext getContext() { 
     AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); 
     context.register(AppConfig.class); 
     return context; 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.httpBasic().realmName("SiteMinderRealm").and().x509(); 
    } 

} 
+0

Dlaczego masz zarówno "web.xml" i "WebApplicationInitializer"? Które nie są nawet takie same? –

+0

@ M.Deinum Używam tylko WebApplicationInitializer nie web.xml, web.xml pokazano, który jest z mojej starej aplikacji wiosennej, którą próbuję przekonwertować na spring4 konfigurację java, Jedyne co to jest to, że nie wiem jak konwertować te siteminder stuff to java config –

+0

Dla 'login-config' nie ma odpowiednika java, który jest pominięty w specyfikacji serwletu java, nie wiem dlaczego. Będziesz potrzebował zarówno pliku 'web.xml' (dla' login-config'), jak i Java'a dla konfiguracji Spring (chociaż proponuję rozszerzenie ''AbstractAnnotationConfigDispatcherServletInitializer'). –

Odpowiedz

5

Próbowałaś konfiguracji to na WebSecurityConfigurerAdapter? Coś takiego:

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 
@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http.httpBasic().realmName("SiteMinderRealm").and().x509(); 
    } 
} 
+0

czy nie wspomnieć o 'auth-method' w tym –

+0

' x509() ' jest taki sam jak ' CLIENT-CERT' jeśli się nie mylę – prettyvoid

+0

to nie działało –

Powiązane problemy