Spring Security6 - Authentication(인증)

2023. 10. 21. 02:07·Spring/Spring Security
반응형

1. 인증 관련 주요 클래스와 인터페이스 및 동작원리


  • Authentication: 인증 요청과 인증된 주체를 나타내는 인터페이스이다.
  • AuthenticationManager: 실제로 인증을 처리하는 인터페이스이다.
  • UserDetailsService: 사용자의 세부 정보를 로드하는 방법을 정의한다.
  • PasswordEncoder: 비밀번호의 암호화 또는 해싱을 처리한다.

spring security6

  • Spring Security 6의 주요 인증 방식(Basic Authentication, Form-Based Authentication, OAuth2, JWT)은 모두 AuthenticationManager를 사용한다.
  • AuthenticationManager는 UserDetailsService를 호출하여 사용자 정보를 로드하고, Authentication 객체를 생성한다.
  • UserDetailsService는 PasswordEncoder를 사용하여 비밀번호를 검증한다.


 

2. Spring Security 6에서의 인증 (Authentication) 방법


Spring Security 6에서는 SecurityFilterChain을 @Bean으로 등록하여 사용하는 새로운 방식이 주목을 받고 있다. 이를 기반으로 주요 인증 방식들을 살펴보자


2-1. 기본 인증 (Basic Authentication)

@Bean
public SecurityFilterChain basicSecurityFilterChain(HttpSecurity http) throws Exception {
    return http
            .authorizeHttpRequests(authz -> authz
                    .anyRequest().authenticated()
            ).httpBasic(Customizer.withDefaults())
            .build();
}


2-2. 폼 인증 (Form-Based Authentication)

@Bean
public SecurityFilterChain formSecurityFilterChain(HttpSecurity http) throws Exception {
    http
            .authorizeHttpRequests(authz -> authz
                    .anyRequest().authenticated()
            ).formLogin(Customizer.withDefaults());
    return http.build();
}


2-3. OAuth2 인증

@Bean
public SecurityFilterChain oauth2SecurityFilterChain(HttpSecurity http) throws Exception {
    http
            .authorizeHttpRequests(authz -> authz
                    .anyRequest().authenticated()
            )
            .oauth2Login(Customizer.withDefaults());
    return http.build();
}


2-4. JWT (Json Web Token) 인증

@Bean
public SecurityFilterChain jwtSecurityFilterChain(HttpSecurity http) throws Exception {
    http
            .authorizeHttpRequests(authz -> authz
                    .anyRequest().authenticated()
            )
            .addFilterBefore(new JwtFilter(), UsernamePasswordAuthenticationFilter.class);
    return http.build();
}


2-5. 인증 흐름

  1. 사용자가 로그인을 시도한다.
  2. AuthenticationManager가 UserDetailsService를 사용하여 사용자 정보를 로드한다.
  3. 로드된 사용자 정보와 입력값을 비교하여 인증 여부를 결정한다.

 


 

2023.10.21 - [SpringBoot 개발/Spring Security] - Spring Security와 CORS: 크로스 도메인 리소스 공유 이해하기

 

Spring Security와 CORS: 크로스 도메인 리소스 공유 이해하기

코딩은 글쓰기라고 생각한다. 꾸준히 기록하며 내 개발 실력을 키울것이다.

curiousjinan.tistory.com

 

반응형

'Spring > Spring Security' 카테고리의 다른 글

스프링 시큐리티에서 SecurityContext를 비동기 스레드에 전파하는 방법  (0) 2025.01.12
[Spring] 스프링 시큐리티 설정이 @Bean 기반 구성으로 바뀐 이유  (0) 2024.08.23
Spring Security와 CORS: 크로스 도메인 요청 처리 기법 알아보기  (0) 2023.10.21
Spring Boot 3.1 & Spring Security 6: Security Config 최적화 리팩토링 (12편)  (0) 2023.09.04
Spring Boot 3.1 & Spring Security 6: JWT 검증 리팩토링 (11편)  (2) 2023.09.04
'Spring/Spring Security' 카테고리의 다른 글
  • 스프링 시큐리티에서 SecurityContext를 비동기 스레드에 전파하는 방법
  • [Spring] 스프링 시큐리티 설정이 @Bean 기반 구성으로 바뀐 이유
  • Spring Security와 CORS: 크로스 도메인 요청 처리 기법 알아보기
  • Spring Boot 3.1 & Spring Security 6: Security Config 최적화 리팩토링 (12편)
Stark97
Stark97
문의사항 또는 커피챗 요청은 링크드인 메신저를 보내주세요! : https://www.linkedin.com/in/writedev/
  • Stark97
    오늘도 개발중입니다
    Stark97
  • 전체
    오늘
    어제
    • 분류 전체보기 (240) N
      • 개발지식 (20)
        • 스레드(Thread) (8)
        • WEB, DB, GIT (3)
        • 디자인패턴 (8)
      • JAVA (21)
      • Spring (88)
        • Spring 기초 지식 (35)
        • Spring 설정 (6)
        • JPA (7)
        • Spring Security (17)
        • Spring에서 Java 활용하기 (8)
        • 테스트 코드 (15)
      • 아키텍처 (5)
      • MSA (14)
      • DDD (7) N
      • gRPC (9)
      • Apache Kafka (18)
      • DevOps (23)
        • nGrinder (4)
        • Docker (1)
        • k8s (1)
        • 테라폼(Terraform) (12)
      • AWS (32)
        • ECS, ECR (14)
        • EC2 (2)
        • CodePipeline, CICD (8)
        • SNS, SQS (5)
        • RDS (2)
      • notion&obsidian (3)
  • 링크

    • notion기록
    • 깃허브
    • 링크드인
  • hELLO· Designed By정상우.v4.10.0
Stark97
Spring Security6 - Authentication(인증)
상단으로

티스토리툴바