0% ont trouvé ce document utile (0 vote)
12 vues6 pages

Sécurisation d'applications avec Spring

Spring Security est un framework de sécurité pour les applications Java, offrant des fonctionnalités d'authentification, d'autorisation et de protection contre les vulnérabilités. Le document décrit la création d'une base de données pour gérer la sécurité, ainsi que des exemples de configuration et de code pour intégrer Spring Security dans une application Spring Boot. Il inclut également des instructions pour créer des tables, insérer des données et configurer la sécurité des routes dans l'application.

Transféré par

duhlz.blank
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
12 vues6 pages

Sécurisation d'applications avec Spring

Spring Security est un framework de sécurité pour les applications Java, offrant des fonctionnalités d'authentification, d'autorisation et de protection contre les vulnérabilités. Le document décrit la création d'une base de données pour gérer la sécurité, ainsi que des exemples de configuration et de code pour intégrer Spring Security dans une application Spring Boot. Il inclut également des instructions pour créer des tables, insérer des données et configurer la sécurité des routes dans l'application.

Transféré par

duhlz.blank
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

React

Sécurité des applications distribuées

Architecture des composants [Link] 373

SPRING SECURITY

❖ Spring Security est un framework de sécurité pour les applications Java.

❖ Il fournit des fonctionnalités de sécurité complètes pour les applications basées


sur Spring.

❖ Il permet d‘assurer l'authentification, l'autorisation et la protection contre les


vulnérabilités courantes liées à la sécurité dans les applications .

❖ S'intègre parfaitement avec d'autres composants Spring tels que Spring MVC,
Spring Boot et Spring Data.

Architecture des composants [Link] 374


SPRING SECURITY

Home page

User authentificated

Spring Security User authentification


User fail
Login page

BDD

Architecture des composants [Link] 375

SPRING SÉCURITÉ- ACTIVITÉ


1. Créer une nouvelle BDD nommée « gestionsecurite » et créer les trois tables
suivantes :
-- Users
create table if not exists users create table if not exists notes(id int PRIMARY
( key, username varchar(200) not null, matiere var
username varchar(200) not null primary key, char(50) not null, note int, constraint fk_note_
password varchar(500) not null, users foreign key (username) references users (u
enabled boolean not null sername));
);

-- Authorities
create table if not exists authorities
(
username varchar(200) not null,
authority varchar(50) not null,
constraint fk_authorities_users foreign key (username) references users (username),
constraint username_authority UNIQUE (username, authority)
);

Architecture des composants [Link] 379


ACTIVITÉ
1. Insérer un jeu d’enregistrement
Le mot de passe est :password
INSERT users VALUES("user", "{bcrypt}$2a$14$tEnq90/CcR320dWQ.NdQLuj326PmgLzMGmFkUUOHQrbjPWplKK67i", true);

INSERT users VALUES("admin", "{bcrypt}$2a$14$tJANh4xMR7qNjwwftmoZjezhp6rP.RVUtIFXFBF6maQvqGXwvM4JS", true);

INSERT users VALUES("user1", "{bcrypt}$2a$14$tEnq90/CcR320dWQ.NdQLuj326PmgLzMGmFkUUOHQrbjPWplKK67i", true);

INSERT authorities VALUES("user", "ROLE_USER");


INSERT authorities VALUES("admin", "ROLE_USER");
INSERT authorities VALUES("admin", "ROLE_ADMIN");
INSERT authorities VALUES("user1", "ROLE_USER");
//insérer des données dans la tables notes

Architecture des composants [Link] 380

@RestController
public class EtudiantController {
ACTIVITÉ @GetMapping("/liste")
public List<Etudiant>getEtudiants(){
return [Link](
Créer une nouvelle application spring boot new Etudiant(1,"Lamrani","Yousra"),
new Etudiant(2,"kessou","Abdo"),
Ajouter les deux classes Etudiant et EtudiantController new Etudiant(3,"chadli","Adam")
);
@Data }
@NoArgsConstructor @GetMapping("/msg")
@AllArgsConstructor public String getMessage(){
public class Etudiant { return "Utilistaurs";
int id; }
String nom; }
String prenom;
}
@Table(name="notes")
public class Note {
@Id
@GeneratedValue(strategy = [Link])
int id;
String username;
String matiere;
int note;
}

Architecture des composants [Link] 381


ACTIVITÉ
@Service
public interface NoteRepository extends JpaRepository<Note,Integer> { public class ServiceNote {
public List<Note> getNotesByUsername(String nom); @Autowired
} NoteRepository noteRepository;
public List<Note> listeNote(){
return [Link]();
}
@RestController
public List<Note> listeNoteParUser(String nom){
public class NoteController {
return [Link](nom);
@Autowired
}
ServiceNote serviceNote;
}
@GetMapping("/notes")
public List<Note> getAllNote(){
return [Link]();
}
@GetMapping("/notesUser")
public List<Note> getNoteParUser(){
String userName=[Link]().getAuthentication().getName();
return [Link](userName);
}
}

Architecture des composants [Link] 382

Ajouter le fichier de configuration de la sécurité « SecurityConfig »


@Configuration
ACTIVITÉ
@EnableWebSecurity
@EnableMethodSecurity
public class SecurityConfig {
@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authorize) -> authorize
.requestMatchers("/msg","/noteUser").hasAnyRole("USER")
.requestMatchers("/liste" ,"/notes").hasAnyRole("ADMIN")
.anyRequest().authenticated()
)
.formLogin(login -> login
.defaultSuccessUrl("/")
.permitAll())
.logout(logout -> logout
.logoutSuccessUrl("/"));
return [Link]();
}
@Bean
PasswordEncoder passwordEncoder() {
return [Link]();
}
@Bean
UserDetailsManager jdbcUserDetailsManager(DataSource dataSource) {
return new JdbcUserDetailsManager(dataSource);
}
} Architecture des composants [Link] 383
ACTIVITÉ
Le fichier [Link]
<dependency>
<groupId>[Link]</groupId>
<dependency> <artifactId>mysql-connector-j</artifactId>
<groupId>[Link]</groupId> <scope>runtime</scope>
<artifactId>spring-boot-starter-web</artifactId> </dependency>
</dependency> <dependency>
<groupId>[Link]</groupId>
<dependency> <artifactId>spring-boot-starter-test</artifactId>
<groupId>[Link]</groupId> <scope>test</scope>
<artifactId>spring-boot-starter-security</artifactId> </dependency>
</dependency> <dependency>
<dependency> <groupId>[Link]</groupId>
<groupId>[Link]</groupId> <artifactId>spring-security-test</artifactId>
<artifactId>thymeleaf-extras-springsecurity6</artifactId> <scope>test</scope>
</dependency> </dependency>
<dependency> <!-- [Link] -->
<groupId>[Link]</groupId> <dependency>
<artifactId>spring-boot-starter-jdbc</artifactId> <groupId>[Link]</groupId>
</dependency> <artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
Architecture des composants [Link] 384

ACTIVITÉ
[Link]

[Link]-auto=update

[Link]=jdbc:mysql://localhost:3306/gestionsecurite

[Link]=root

[Link]=

[Link]-class-name=[Link]

Architecture des composants [Link] 385


ACTIVITÉ
Teste avec le compte « admin »

Architecture des composants [Link] 386

ACTIVITÉ
Teste avec le compte « user »

Architecture des composants [Link] 387

Vous aimerez peut-être aussi