2016-03-20 8 views
1

Bir REST API'sı için Spring Security ile ilgili bir sorun arıyorum. Uygulamaya geçmeden önce, varsa bir uzman tavsiyesi veya github hakkında bir örnek proje almak istiyorum.REST mimarisine sahip Spring Security

Uygulamam REST API'sini temel alacaktır. Ve iki müşteriler tarafından erişilebilir olacaktır:

  1. Cep Telefonu
  2. Web ben özel giriş sayfası ile REST API oluşturursanız

, o zaman her zaman benim anlayış uyarınca (Web yönlendirileceksiniz). Ne zaman Cep Telefonu ile tüketmeye başlayacağım?

  1. localhost: 8080/API/API için
  2. localhost: 8383/ui

    .formLogin() 
           .defaultSuccessUrl("/ui/index.html#/app/dashboard") 
           .loginProcessingUrl("/api/upuser/verifyUser") 
           .usernameParameter("username") 
           .passwordParameter("password") 
           .successHandler(new AjaxAuthenticationSuccessHandler(new SavedRequestAwareAuthenticationSuccessHandler())) 
           .loginPage("/ui/index.html#/access/signin") 
    

    Ben bu uygulama iki farklı yerlerden erişilebilir olacağı oldukça açık görünüyor yukarıdaki koddan düşünüyorum/WEB için (Açısal JS)

Ama hem localhost/aPI/& localhost/ui/nginx kullanarak hareket edecektir. Yani, yukarıdaki iki

  1. localhost/API tarafından erişilebilir olacak/
  2. /

Yani, ikinci sorum bahar güvenliğini uygulamak için en iyi yolu ne olacağını

  • localhost/ui olduğunu :

    1. Token temel kimlik doğrulaması
    2. oturum tabanlı kimlik doğrulaması

    Sorun, oturum tabanlı Kimlik Doğrulama'yı nasıl uygulayacağımıza yönelik vatansız bir hizmettir? Böyle

  • +0

    Bu sana bir doğru karar almaya yardımcı olmak, Mayıs yapıyorum budur. Webapp'ım yalnızca dinlenme API'sini belirteç tabanlı kimlik doğrulamasıyla işler. Bu giriş ui vb. Işlemez. Sadece 401 yetkisiz durumu geri istemciye gönderir. Ayrı bir angular ve mobil modüllerim var. AngularJS, bir http interceptor ile kimlik doğrulama ve yönlendirme işlemlerini gerçekleştirir. – JChap

    cevap

    0

    deneyin şey:

    You should try this, may be it will help you: 
    
    @Configuration 
    @EnableWebSecurity 
    @Profile("container") 
    public class SOAPSecurityConfig extends WebSecurityConfigurerAdapter { 
    
    @Autowired 
    private AuthenticationProvider authenticationProvider; 
    
    @Autowired 
    private AuthenticationProvider authenticationProviderDB; 
    
    
    @Override 
    @Order(1) 
    
    protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
        auth.authenticationProvider(authenticationProvider); 
    } 
    
    
    @Order(2) 
    protected void ConfigureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
        auth.authenticationProvider(authenticationProviderDB); 
    } 
    
    @Override 
        public void configure(WebSecurity web) throws Exception { 
        web 
         .ignoring() 
         .antMatchers("/scripts/**","/styles/**","/images/**","/error/**"); 
        } 
    
    @Override 
    public void configure(HttpSecurity http) throws Exception { 
        http 
          .authorizeRequests() 
          .antMatchers("/rest/**").authenticated() 
          .antMatchers("/**").permitAll() 
          .anyRequest().authenticated() 
          .and() 
          .formLogin() 
          .successHandler(new AuthenticationSuccessHandler() { 
           @Override 
           public void onAuthenticationSuccess(
             HttpServletRequest request, 
             HttpServletResponse response, 
             Authentication a) throws IOException, ServletException { 
              //To change body of generated methods, 
              response.setStatus(HttpServletResponse.SC_OK); 
             } 
          }) 
          .failureHandler(new AuthenticationFailureHandler() { 
    
           @Override 
           public void onAuthenticationFailure(
             HttpServletRequest request, 
             HttpServletResponse response, 
             AuthenticationException ae) throws IOException, ServletException { 
              response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); 
             } 
          }) 
          .loginProcessingUrl("/access/login") 
          .and() 
          .logout() 
          .logoutUrl("/access/logout")     
          .logoutSuccessHandler(new LogoutSuccessHandler() { 
           @Override 
           public void onLogoutSuccess(
             HttpServletRequest request, 
             HttpServletResponse response, 
             Authentication a) throws IOException, ServletException { 
            response.setStatus(HttpServletResponse.SC_NO_CONTENT); 
           } 
          }) 
          .invalidateHttpSession(true) 
          .and() 
          .exceptionHandling() 
          .authenticationEntryPoint(new Http403ForbiddenEntryPoint()) 
          .and() 
          .csrf()//Disabled CSRF protection 
          .disable(); 
        } 
    } 
    
    +0

    Hem mobil hem de web ile çalışmak için bu kodu uyguladınız mı? Evet ise, kodu paylaşırsanız, bu –

    +0

    'a derinlemesine bir bakış atıp, hem web uygulaması hem de mobil cihazlar için çalışır, kodu paylaşamıyorum, denemelisiniz ve eğer sıkışmışsanız Ben –

    +0

    cevabını çözmenize yardımcı olacağım cevabınız için teşekkürler ojus, Uygulamayı gösteren başka bir soru yarattım, şimdiye kadar yaptım. Ancak, hala bir sorunla karşı karşıya. Bahar güvenliğine yeniyim, bu yüzden çok fazla sorunum var. http://stackoverflow.com/questions/36140375/annotation-based-spring-security-for-rest-api –