250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- CHECK OPTION
- 즉시로딩
- 유니크제약조건
- PS
- 연관관계
- fetch
- 백트래킹
- 스토어드 프로시저
- FetchType
- eager
- BOJ
- 일대다
- SQL프로그래밍
- 지연로딩
- 이진탐색
- 스프링 폼
- 다대일
- exclusive lock
- execute
- shared lock
- 데코레이터
- dfs
- 낙관적락
- 비관적락
- 다대다
- 연결리스트
- JPQL
- 힙
- querydsl
- 동적sql
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
JWT 본문
728x90
JWT
JWT는 Header, Payload, Signature 3개의 부분으로 구성되어 있다.
Header : Signature를 해싱하기 위한 알고리즘 정보들이 담겨있다.
Payload : 서버와 클라이언트가 주고받는, 시스템에서 실제로 사용될 정보에 대한 내용들을 담고 있다.
Signature : 토큰의 유효성 검증을 위한 문자열이다. 이 문자열을 통해 서버에서는 이 토큰이 유효한 토큰인지를 검증할 수 있다.
JWT의 장단점
장점 : 중앙의 인증서버, 데이터 스토어에 대한 의존성이 없고, 시스템 수평 확장에 유리하다.
단점 : Payload의 정보가 많아지면 네트워크 사용량이 증가하고, 이에 따라 데이터 설계 고려를 해야한다.
토큰이 클라이언트에 저장되므로 서버에서 클라이언트의 토큰을 조작할 수 없다.
JWT 코드 시작
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
새로운 프로젝트를 만들고, 아무 api 만들어서 요청을 해보면, 401 unauthorized 에러가 난다.
@EnableWebSecurity // 기본적인 Web 보안을 활성화 하겠다.
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception{
httpSecurity
.authorizeRequests() // HttpServletRequest를 사용하는 요청들에 대한 접근제한을 하겠다
.antMatchers("/api/hello").permitAll() // 이 API에 대한 요청은 인증없이 접근을 허용하겠다.
.anyRequest().authenticated(); // 나머지 요청들은 모두 인증되어야 한다
}
}
이제 /api/hello 의 요청에 401 unauthorized는 뜨지 않는다.
WebSecurityConfigurerAdapter는 deprecated 되었다. 나중에 이거 관련해서도 수정해보자.
'web.etc' 카테고리의 다른 글
Github Actions :: 깃허브 액션, CodeDeploy&Docker (0) | 2023.05.25 |
---|---|
CGI : 서버에서 프로그램을 실행시키자 (0) | 2023.05.06 |
80번포트로 들어오는 요청을 8080번포트로보내라! (0) | 2023.02.15 |
세션 저장소로 데이터베이스 사용하기 (0) | 2023.01.18 |
pythonanywhere - 배포하기 (0) | 2022.06.09 |