본문 바로가기
부트캠프 개발일기/Spring Security

67일차: OAuth2 인증

by shyun00 2023. 5. 18.

❯ OAuth 2

사용자가 특정 서비스를 이용하기 위해서 신뢰할만한 벤더에게 인증 처리를 위임하는 것을 말한다.

주변에서 쉽게 찾아볼 수 있으며, 구글 로그인 / 네이버 로그인 등이 여기에 해당한다.

OAuth2 에서 Componet의 종류와 역할

  • Resource Owner: 사용하고자하는 리소스의 실제 소유자를 의미한다. 예를들어 A라는 애플리케이션에 B라는 사람이 구글로그인을 통해 서비스를 이용하고자한다면, B가 구글로그인 서비스의  Resource Owner가 된다.
  • Client: Resource Owner를 대신해 Resource에 액세스하는 애플리케이션을 의미한다. 위의 경우에서 A에 해당한다.
  • Authorization Server: Client가 Resource Server에 접근할 수 있는 권한을 부여하는 서버이다.
        Resource Owner 가 인증에 성공하면 Access Token*형태로 접근 권한을 부여하게된다.
        * Access Token: Client가 Resource에 접근하기 위해 사용하는 자격증명 토큰을 의미한다.
        * Scope: 주어진 Access Token 으로 접근할 수 있는 리소스 범위를 지정한다.
  • Resource Server: Client의 요청을 수락하고 Resource를 제공하는 서버를 의미한다.

Authorization Grant(권한 부여)

Client 애플리케이션이 Access Token을 얻기 위한 Resource Owner의 권한을 표현하는 Credential을 의미한다.

총 네가지 타입으로 구분된다.

  • Authorization Code Grant: 권한 부여 승인코드 방식
  • Implicit Grant: 암묵적 승인 방식
  • Resource Owner Password Credential Grant: 자원 소유자 자격 증명 승인 방식
  • Client Credentials Grant: 클라이언트 자격 증명 승인방식

카카오톡, 구글, 트위터 등을 통해 OAuth2를 구현하는 방법은 공식 문서를 확인하는것이 좋다.

https://developers.kakao.com/docs/latest/ko/kakaologin/common

https://developers.google.com/identity/protocols/oauth2?hl=ko 

https://developer.twitter.com/en/docs/authentication/oauth-2-0