개요
스프링 부트 시큐리티는 스프링 시큐리티에 스타터를 제공해서 더 빠르게 보안설정을 지원합니다.
스프링 부트 시큐리티에서 가장 중요한 개념은 인증과 권한 부여입니다.
인증방식은 Credential 기반 인증 방식
과 이중 인증 방식
도 있습니다. credential기반 인증방식은 전통적인 아이디, 패스워드 인증 방식이며,이중 인증 방식
의 대표적인 예는 OAuth2
방식이 있습니다.
OAuth2
OAuth
는 토큰
을 사용한 범용적인 방법의 인증을 제공하는 표준 인증 프로토콜이며, OAuth2
는 두번째 버전으로 총 4가지의 승인 타입을 제공합니다.
권한 부여 코드 승인 타입(Authorization Code Grant Type)
- 클라이언트가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용됩니다. 리소스 접근을 위한 사용자명과 비밀번호, 권한 서버에 요청해서 받은
권한코드
를 함께 활용하여 리소스에 대한액세스 토큰
을 받으면 이를 인증에 이용하는 방식입니다.
암시적 승인타입 (Implicit Grant Type)
- 권한 부여코드 승인 타입과 다르게 권한 코드 교환 단계없이 액세스 토큰을 즉시 반환받아 이를 인증에 이용하는 방식입니다.
리소스 소유자 암호 자격 증명 승인 타입 (Resource Owner Password Credentials Grant Type)
- 클라이언트가 암호를 사용하여 액세스 토큰에 대한 사용자의 자격증명을 교환하는 방식입니다.
클라이언트 자격 증명 승인 타입 (Client Credentials Grant Type)
- 클라이언트가 컨텍스트 외부에서 액세스 토큰을 얻어 특정 리소스에 접근을 요청할 때 사용하는 방식입니다.
이 중에서도 권한부여코드승인타입
이 다양한 소셜미디어들이 웹서버 형태의 클라이언트 형태로 지원하는데 많은 서비스들이 이 방식이 사용하고 있습니다.
특징
- 기존의 사용자명 + 비밀번호 인증 방식은 단 한 번의 요청으로 인증을 하며, OAuth2는 최소 세 번 요청을 하게 됩니다.
- 회원가입 없이 이미 사용하는 소셜미디어 계정으로 인증하기 때문에 사용자 입장에서는 더욱 편리하게 로그인을 할 수 있게됩니다.
- 서비스 측면에서는 회원가입관련 기능을 축소시키고, 소셜에서 제공하는 User 정보를 가져올 수 있기 때문에 간편합니다.
Reference
- 처음으로 배우는 스프링부트 2 - 김영재