JWT + Spring Security(1) 개요
보안은 이제 선택이 아닌 필수가 되었다.
Spring Security로 간단하게 보안을 적용할 수 있으며
Security의 기본은 인증(Authentication) 과 권한부여(Authorization)이다.
이번에는 Security와 JWT를 융합시켜 Session을 사용하지 않는 인증과 권한부여 체제를 구현해보았다.
JWT ( Json Web Token )
토큰 기반 인증은 현 웹서비스에서 많이 사용되고 있다. 최근에 REST API에서 토큰 기반 인증은
- Stateless 서버 ( 상태를 유지할 필요가 없다.-세션이 없음)
- 모바일 클라이언트 ( 쿠키를 사용하는 것보다 토큰 기반 인증이 더욱 간단하고 적절하다 )
- 인증정보의 공유 ( OAuth 와 같이 다른 웹서비스에서도 로그인 정보를 넘길 수 있다. - SNS로그인 경우 )
- 보안 ( 복호화는 서버에서만 이루어지기 때문에 보안을 높일 수 있다. )
의 장점을 가질 수 있다. https://velopert.com/2350 (참고)
또한 Stateless는 확장성에도 이점이 있다. 서버를 늘려도 세션을 공유할 필요가 없기때문이다.
시퀀스 다이어그램
클라이언트가 id/pw로 로그인 요청을 하면 security에서 로그인 요청을 받는다.
security는 회원정보 확인을 위해 DB에 정보를 요청하고 반환 받는다.
security에서 성공적으로 유저 인증이 되면 JWT를 생성 요청한다.
JWT는 유저의 권한, 아이디 등의 정보로 토큰을 만들어 반환한다.
클라이언트에게 JWT을 반환한다.
Spring Security는 외부의 요청을 가로체어 JWT의 유효성을 검사한다.
JWT는 해당 토큰의 유효성을 검사하고 결과를 반환한다.
해당 결과가 양호하면 REST API에 기능을 요청하고 반환 받아 클라이언트에게 데이터를 전달한다.
이제 구현을 해보쟈 >> (2)
'Backend > spring' 카테고리의 다른 글
Spring boot 시작하기(2) (0) | 2017.08.16 |
---|---|
Spring boot 시작하기(1) (0) | 2017.08.16 |
Spring Boot+JPA REST API 서버 만들기 (0) | 2017.05.03 |