[SpringBoot]/[Spring 강의]

[Spring 강의 작성] JWT 토큰 인증방식 적용하기 - 1

Hevton 2023. 1. 5. 18:39
반응형

 

이 글에서는 JWT 토큰 인증을 사용하는 실습을 설명한다.

 

 

 

dependency를 먼저 추가한다.

implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.security:spring-security-test'

 

 

그리고 프로젝트를 실행하기만 해도,

localhost:8080 내의 어느 경로로 이동을 해도 다음과 같은

localhost:8080/login 으로 리다이렉션 되면서 로그인을 하라고 한다.

재미있는 현상이다. Rest Client로 실행해보면 401 Unauthorized 가 반환된다. 권한이 없다는 것.

 

 

설정을 진행해보자.

config 패키지를 생성하여 SecurityConfig를 생성한다.

 

 

SecurityConfig.java

package io.spring.hevton.Team.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.SecurityFilterChain;


@EnableWebSecurity
@EnableMethodSecurity
@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        return http
                .csrf().disable()

                /**401, 403 Exception 핸들링 */
                .exceptionHandling()

                /**세션 사용하지 않음*/
                .and()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)

                /** HttpServletRequest를 사용하는 요청들에 대한 접근 제한 설정*/
                .and()
                .authorizeRequests()
                .antMatchers("/hello").permitAll()

                .anyRequest().authenticated()

                .and().build();
    }
}

이렇게 하면,

localhost:8080/hello에 대한 접근은 허용하고

나머지 접근에 대해서는 권한설정이 필요하다는 금지 설정을 해놓았다.

 

antMatchers("/hello").permitAll() => /hello는 모든 접근 허용

.anyRequest().authenticated() => 그 이외 나머지는 권한 필요

 

 

서버를 실행해서

localhost:8080/hello 에 대해서는 접근이 가능하지만

 

나머지 모든 접근은 불가능한 상태인 것을 확인할 수 있다.

 

 

다음 글에서 이어서 작성한다!!

반응형