인증 인가란 ?
- 인증(Authentication): 해당 사용자가 본인이 맞는지를 확인하는 절차입니다.
- 인가(Authorization): 인증된 사용자가 해당 리소스에 접근 가능한지 결정하는 절차입니다.
인증 방식 정리
- Credential 기반: ID와 Password 기반으로 인증하는 방식
- 이중 인증 (Two-Factor): Credential방식의 인증 후 물리적인 다른 인증 체계를 이용한 인증 방식 (eg. OTP)
- 하드웨어 기반 인증: 해당 기기 인증
토큰 타입
- Access Token
- 클라이언트에서 사용자의 보호된 리소스에 접근하기 위해 사용하는 일종의 자격 증명으로서 역할을 하며 리소스 소유자가 클라이언트에게 부여한 권한 부여의 표현이다
- 일반적으로 JWT(JSON Web Tokens) 형식을 취하지만 사양에 따라 그럴 필요는 없다.
- 토큰에는해당액세스기간,범위및서버에필요한기타정보가있다.
- 타입에는 식별자 타입 (Identifier Type) 과 자체 포함타입 (Self-contained Type) 이 있다
- Refresh Token
- 액세스 토큰이 만료된 후 새 액세스 토큰을 얻기 위해 클라이언트 응용 프로그램에서 사용하는 자격 증명
- 액세스 토큰이 만료되는 경우 클라이언트는 권한 부여 서버로 인증하고 Refresh Token 을 전달한다.
- 인증 서버는 Refresh Token 의 유효성을 검사하고 새 액세스 토큰을 발급한다.
- Refresh Token 은 액세스 토큰과 달리 권한 서버 토큰 엔드포인트에만 보내지고 리소스 서버에는 보내지 않는다.
- ID Token
- OIDC(OpenID Connect)에 해당되는 내용입니다. 현재 저희는 사용하는 부분은 존재하지 않습니다.
- Authorization Code
- 권한 부여 코드 흐름에서 사용되며 이 코드는 클라이언트가 액세스 토큰과 교환할 임시 코드입니다.
- 사용자가 클라이언트가 요청하는 정보를 확인하고 인가 서버로부터 Redirect 되서 들어옵니다.
- 소셜 로그인창이 열리고, 로그인 성공시 Authorization Code를 받아옵니다. 발급받은 권한 부여코드를 이용하여, 액세스 토큰으로 유저정보를 받아오게되고 해당 유저정보를 이용해서 소셜로그인 및 회원가입 절차를 진행되게 되어있습니다. → 기록모아에서는 현재 Spring Security OAuth2Client를 이용해서 이 FLOW를 적용중입니다.
JWT란
- 식별자 타입 (Identifier Type)

access_token |
username |
scope |
expires_in |
N42kjil2k34lntk |
Raven |
email, read, write |
1523428322L |
- 구글, 카카오 소셜 로그인은 해당 형태의 Token을 사용하게 됩니다.
- 인가 서버는 데이터 저장소에 토큰 내용을 저장하고 이토큰에 대한 고유 식별자만 클라이언트에 다시 발행합니다.
- 이 토큰을 수신하는 API는 토큰의 유효성을 검사하기 위해 인가 서버에 대한 백채널 통신을 열고 DB를 다시 조회해야 합니다.
- 자기 포함 타입 (Self-contained Type)