Vous cherchez un exemple de sécurité de ressort Simple [fermé]

Je suis nouveau sur spring-security (Java) et je cherche un bon et simple Exemple de:

  1. Comment utiliser le printemps de sécurité pour la connexion et la déconnexion

  2. Assurez-vous que la session existe sur chaque page et sinon redirigez à nouveau vers la connexion

  3. Comment accéder à la Session utilisateur actuelle

Mon projet travaille actuellement avec spring MVC et hibernate.
J'ai construit le loginAPI + loginDAO, je dois maintenant combiner la sécurité et faire certaines des pages sécurisées.

J'ai cherché des tutoriels, mais beaucoup d'entre eux sont très compliquées.

21
demandé sur Premraj 2011-02-04 18:09:26

5 réponses

Eh bien. C'est, je pense, est de loin le meilleur que j'ai vu jusqu'à présent!
http://krams915.blogspot.com/2010/12/spring-security-mvc-integration_18.html

16
répondu fatnjazzy 2011-02-05 19:01:28

Vous pouvez rechercher une implémentation à Authentification unique(par exemple CAS) dans Spring Security. Il servira votre but complètement.

Vérifier: -

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

Https://wiki.jasig.org/display/CASC/Using+le + cas + Client + 3.1 + avec + printemps + sécurité

5
répondu Abhishek De 2011-08-12 08:46:00

C'est aussi un excellent exemple:

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

Les deux sont bien documentés et sont faciles à modifier pour votre proposition. Krams parle de LDAP en utilisant Spring Security.

3
répondu Filipe Cabaco 2014-07-11 16:30:24

Si vous n'avez pas encore regardé cette vidéo du développeur principal de Spring Security . Il est en fait référencé sur le site de sécurité Spring, mais il est facile de manquer. Bien que je sois d'accord, de bons exemples de sécurité de printemps sont difficiles à trouver.

1
répondu Andrew White 2011-02-04 15:15:50

Tutoriel de sécurité printemps par MKyong

Comment effectuer l'authentification de base de données (à L'aide de XML et D'Annotations) dans Spring Security.

Technologies utilisées :

Ressort 3.2.8.Libération
Sécurité Du Ressort 3.2.3.Libération
Spring JDBC 3.2.3.Libération
Eclipse 4.2
JDK 1.6
Maven 3
Tomcat 6 ou 7 (Servlet 3.x)
Serveur MySQL 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();
    }
}

Printemps-sécurité.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>
  • dans Félicitation ci-dessus, le /admin et les sous-dossiers de celui-ci sont tous protégés par mot de passe.
  • login-page=”/login” - la page pour afficher le formulaire de connexion Personnalisé
  • authentication-failure-url=”/login?error” - si l'authentification a échoué, passez à la page /login?error
  • logout-success-url=”/login?logout” - Si la déconnexion est réussie, transférer vers view /logout
  • username-parameter=”username” – Le nom de la requête qui contient le "nom d'utilisateur". En HTML, c'est le nom du texte d'entrée.
  • <csrf/> – Activer la protection CSRF (Cross Site Request Forgery)
1
répondu Premraj 2017-06-26 01:24:38