스프링에서 인증과 인가를 처리하는 방식에 대해 설명해보세요.
인증과 인가의 개념과 절차에 대해서 알아야 합니다.
인증과 인가 (자격증명/접근제한)
인증은 애플리케이션이 접속하는 사용자에 대한 권한을 부여하고 인가는 자격 증명을 하는 절차 입니다
- 인증은 주체 (사용자)에 대한 검증을 거치는 절차
인가는 인증 과정을 통해 주체가 증명 된 후 접근 권한을 부여
인증은 Authentification 인가는 Authorization
로그인과 인증 구현
로그인 인증 처리과정은 요청 - 인증 - 인가의 절차를 가진다.
HTTP 기본 인증 (HTTP Basic Authentication) 매커니즘을 이용하는 방식
- java.servlet.Filter 구현체가 요청을 받아서 보낼지 말지를 처리해준다.
서버가 사용자를 식별하기 위해서는 몇가지 복잡한 기술이 존재하는데 그중에서 가장 많이 사용되는 기술이 세션-쿠키 기술입니다
기본 원리
- 사용자가 서버에 접속하면 서버는 계속 사용자가 본인임을 증명하기 위해서 간단한 쿠키를 발행해 줍니다
- 그 다음부터 사용자는 그 쿠키를 가지고 자신임을 증명합니다
- 서버는 해당 쿠키와 같은 문자열을 키(key)로 하여 어딘가에 저장해놓습니다
- 이때 시스템 내의 파일이 될 수도 있고(서버가 여러대 일 경우), 메모리 상(단일 서버일 경우) 이 될 수도 있고 DB혹은 Redis가 될 수도 있습니다.
스프링 시큐리티에서도 이와 같이 기본적으로 세션 방식을 채택하고 있습니다 그러나 요즘 JWT같은 토큰 기반의 인증을 사용 합니다.
- [x] Initialize Project and Dependency module import