it-swarm.dev

Szukasz prostego przykładu zabezpieczenia na wiosnę

Jestem nowy w Spring-Security (Java) i szukam dobra i prosta przykład: 

  1. Jak używać zabezpieczenia sprężynowego do logowania i wylogowania

  2. Upewnij się, że sesja istnieje na każdej stronie, a jeśli nie, przekieruj ją ponownie do logowania

  3. Jak uzyskać dostęp do bieżącej sesji użytkownika

Mój projekt pracuje obecnie z wiosennym MVC i hibernuje.
Zbudowałem loginAPI + loginDAO, muszę teraz połączyć zabezpieczenia i zabezpieczyć niektóre strony.

Szukałem samouczków, ale wiele z nich jest bardzo skomplikowanych.

21
MushMushon

Cóż. To jest chyba najlepszy, jaki widziałem do tej pory!
http://krams915.blogspot.com/2010/12/spring-security-mvc-integration_18.html

16
fatnjazzy

Możesz szukać implementacji Single-Sign-On (np. CAS) w Spring Security. To całkowicie spełni twoje zadanie.

Sprawdzić :- 

http://static.springsource.org/spring-security/site/docs/3.0.x/reference/cas.html

https://wiki.jasig.org/display/CASC/Using+the+CAS+Client+3.1+z+Spring+Security

5
Abhishek De

To także świetny przykład:

http://www.mkyong.com/spring-security/spring-security-form-login-example/http://krams915.blogspot.pt/2010/12/spring -security-3-mvc-using-simple-user.html

Oba są dobrze udokumentowane i można je łatwo zmodyfikować. Krams mówi o LDAP za pomocą Spring Security.

3
Filipe Cabaco

Spring Security Tutorial autorstwa MKyong

jak wykonać uwierzytelnianie bazy danych (przy użyciu XML i Adnotacji) w Spring Security.

Zastosowane technologie:

Wiosna 3.2.8.RELEASE
Spring Security 3.2.3.RELEASE
Spring JDBC 3.2.3.RELEASE
Eclipse 4.2
JDK 1.6
Maven 3
Tomcat 6 lub 7 (Servlet 3.x)
MySQL Server 5.6 

SecurityConfig.Java 

package com.mkyong.config;

import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
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;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    DataSource dataSource;

    @Autowired
    public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {

      auth.jdbcAuthentication().dataSource(dataSource)
        .usersByUsernameQuery(
            "select username,password, enabled from users where username=?")
        .authoritiesByUsernameQuery(
            "select username, role from user_roles where username=?");
    }   

    @Override
    protected void configure(HttpSecurity http) throws Exception {

      http.authorizeRequests()
        .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
        .and()
          .formLogin().loginPage("/login").failureUrl("/login?error")
          .usernameParameter("username").passwordParameter("password")
        .and()
          .logout().logoutSuccessUrl("/login?logout")
        .and()
          .exceptionHandling().accessDeniedPage("/403")
        .and()
          .csrf();
    }
}

Spring-security.xml

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

    <!-- enable use-expressions -->
    <http auto-config="true" use-expressions="true">

        <intercept-url pattern="/admin**" access="hasRole('ROLE_ADMIN')" />

        <!-- access denied page -->
        <access-denied-handler error-page="/403" />

        <form-login 
            login-page="/login" 
            default-target-url="/welcome" 
            authentication-failure-url="/login?error" 
            username-parameter="username"
            password-parameter="password" />
        <logout logout-success-url="/login?logout"  />
        <!-- enable csrf protection -->
        <csrf/>
    </http>

    <!-- Select users and user_roles from database -->
    <authentication-manager>
      <authentication-provider>
        <jdbc-user-service data-source-ref="dataSource"
          users-by-username-query=
            "select username,password, enabled from users where username=?"
          authorities-by-username-query=
            "select username, role from user_roles where username =?  " />
      </authentication-provider>
    </authentication-manager>

</beans:beans>
  • W powyższym gratulacjach, kod /admin i jego podfoldery są chronione hasłem.
  • login-page=”/login” - Strona wyświetlająca niestandardowy formularz logowania
  • authentication-failure-url=”/login?error” - Jeśli uwierzytelnienie nie powiodło się, przejdź do strony /login?error
  • logout-success-url=”/login?logout” - Jeśli wylogowanie się powiedzie, przejdź do widoku /logout
  • username-parameter=”username” - Nazwa żądania zawierającego „nazwę użytkownika”. W HTML jest to nazwa tekstu wejściowego.
  • <csrf/> - Włącz ochronę przed przekierowaniem żądania Cross Site Request Forgery (CSRF)
1
Premraj

Jeśli jeszcze nie oglądałeś tego filmu głównego programisty Spring Security . Właściwie jest to przywoływane w witrynie Spring Security, ale łatwo to przegapić. Chociaż się zgadzam, good Spring Przykłady bezpieczeństwa są trudne do zdobycia. 

1
Andrew White