2016-09-30 4 views
0

wir sind auf ein Problem mit einem Spring Webservice gestoßen. Wir verwenden Spring Security, um unser Admin-Backend zu sichern, um API-Schlüssel zu generieren. Wenn wir es auf unseren lokalen Maschinen (Windows und Mac OS) bereitstellen, funktioniert es gut und die Seite lädt. Wenn wir versuchen, es auf einer VM mit Debian oder Ubuntu zu implementieren, laden sich die nicht gesicherten Endpunkte, aber sobald wir das Admin-Backend erreichen, wird der Server blockiert und die Seite wird nicht geladen. Wir haben versucht, es mit der grabletask bootRun aus dem git repo zu implementieren, einen Krieg zu kompilieren und diesen in eine Tomcat-Instanz zu laden und ein jar zu kompilieren und das auszuführen. Nichts davon hat funktioniert. Wir bekommen keine Ausnahmen in der Konsole und es sieht so aus, als ob es gut läuft, aber nachdem wir das Backend getroffen haben, wird auch keine andere Seite geladen, auch nicht die, die vorher gearbeitet haben.Spring Security Absturz bei der Bereitstellung auf Linux-Server

Dies ist die Security Config ist

package me.probE466.config; 

import org.springframework.beans.factory.annotation.Autowired; 

import org.springframework.context.annotation.Configuration; 
import org.springframework.security.config.annotation.authentication.builders.*; 
import org.springframework.security.config.annotation.web.builders.HttpSecurity; 
import org.springframework.security.config.annotation.web.configuration.*; 


@EnableWebSecurity 
@Configuration 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
//  auth 
//    .inMemoryAuthentication() 
//    .withUser("user").password("password").roles("ADMIN"); 
    } 

    protected void configure(HttpSecurity http) throws Exception { 
     http.csrf().ignoringAntMatchers("/post"); 
     http.authorizeRequests() 
       .antMatchers("/admin/**") 
       .authenticated() 
       .antMatchers("/**").permitAll().and().httpBasic(); 
    } 
} 

Diese Der Controller

@RequestMapping(value = "/admin", method = RequestMethod.GET) 
    public ModelAndView getTest() { 
     return new ModelAndView("addapi"); 
    } 

    @RequestMapping(value = "/admin", method = RequestMethod.POST) 
    public 
    @ResponseBody 
    String addApiKey(@RequestParam("userName") String userName) { 
     User user = new User(); 
     String key = generateSecureApiKey(32); 
     user.setUserKey(key); 
     user.setUserName(userName); 
     userRepository.save(user); 
     return key; 
    } 

Dies ist unser build.gradle

buildscript { 
    ext { 
     springBootVersion = '1.4.1.RELEASE' 
    } 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    } 
} 

apply plugin: 'java' 
apply plugin: 'spring-boot' 

jar { 
    baseName = 'push' 
    version = '0.0.1-SNAPSHOT' 
} 
sourceCompatibility = 1.8 
targetCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 


dependencies { 
    compile("mysql:mysql-connector-java:5.1.34") 
    compile('org.springframework.boot:spring-boot-starter-data-jpa') 
    compile('org.thymeleaf:thymeleaf-spring4') 
    compile('org.springframework.boot:spring-boot-starter-security') 
    compile('org.springframework.boot:spring-boot-starter-web') 
    // https://mvnrepository.com/artifact/commons-lang/commons-lang 
    compile group: 'commons-lang', name: 'commons-lang', version: '2.6' 



    testCompile('org.springframework.boot:spring-boot-starter-test') 
} 

Jede Hilfe

ist

Antwort

0

Okay, würde geschätzt wir es herausgefunden ...:

Im Frühling Sicherheit Einstieg (sollte die genauer gelesen hat) heißt es:

package hello; 

import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 

@Configuration 
public class MvcConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/home").setViewName("home"); 
     registry.addViewController("/").setViewName("home"); 
     registry.addViewController("/hello").setViewName("hello"); 
     registry.addViewController("/login").setViewName("login"); 
    } 

} 

Dies war in unserer Konfiguration fehlt. Ich weiß immer noch nicht, warum es auf unserem Client funktioniert hat (es funktioniert immer noch ohne es auf ihnen), aber nicht auf der Linux-Box, aber nachdem wir es hinzugefügt haben, hat es auch dort gut funktioniert. Für zukünftige Referenz: Alle geschützt Controller benötigt hier registriert werden ... zumindest auf unserem Server

Verwandte Themen