OAuth2 인증의 다양한 방식

강한친구·2022년 8월 16일
0
post-thumbnail

OAuth2의 인증방식에는 크게 4가지가 있다.

각각의 장단점이 있고 많이 서비스별로 많이 사용되는 방식이 구분되어 있는데 이를 확인해보도록 하겠다.

Authorization Code Grant Type

  • 권한 부여 코드 승인 타입

  • 리소스 접근을 위한 사용자명, 비밀번호, 권한 서버가 준 AccessCode를 이용해서 리소스 서버로부터 AccessToken을 받아서 작동하게 된다.

  • 대부분의 소셜미디어들이 웹서버 형태에서 사용한다.

사진을 정리하자면
1. 유저가 정보를 보낸다.
2. 리소스 서버가 이를 받아서 소셜서비스에 보내서 장기 접근 토큰을 얻어돈다.
3. 서버는 이를 클라이언트에게 반환한다.

Security가 기본으로 지원하는 방식도 이와 같다고 알려져있다.

Implict Grant Type

  • 암묵적 승인 타입
  • 권한 부여 코드 승인과는 다르게 코드 부여 없이 사용자 자격 증명을 한다.
  • 특정상황에서만 권장되거나 혹은 권장하지 않는 경우도 있다.

  1. 파라미터를 서버에 전달하여 권한코드를 부여받는데, 이 권한코드가 엑세스 토큰이 된다.
  2. 이 토큰의 유효성을 검증하고 검증값을 응답받는다.

최근에는 아예 Legacy 기술로 분류되는 듯 하다
링크

Resource Owner Password Credentials Grant Type

  • 리소스 소유자 암호 자격 인증 타입
  • 클라이언트가 암호를 이용해 AccessToken에 대한 자격증명을 교환한다.
  • 리소스 소유자가 장치 운영 체제 또는 높은 권한을 가진 응용 프로그램과 같이 클라이언트와 신뢰 관계가 있는 경우에 적합하다고 한다.

  1. 리소스 소유자가 아이디, 비밀번호를 통해 클라이언트에 요청한다.

  2. 클라이언트는 Authentication With Credential 기반으로 서버에 AccessToken을 요청한다. 동시에 Refresh Token을 반환해준다.

  3. 이를 기반으로 리소스서버와 통신을한다.

Client Credential Grant Type

  • 클라이언트 자격증명 승인 타입
  • 클라이언트가 직접 권한서버와 연결하여 자격증명을 얻어도고, 서버는 이를 믿고 수행해주는 방식이다.
  • 사용자가 App인 경우 (IOS, Android, React 등) 사용도니다.

보안상 이점?

같이 프로젝트를 하던 팀원분이 말씀해주시기를

OAuth를 이용해서 로그인할 때, 민감한 개인정보를 사이트 DB에 보관하지 않고 전부 Social Service가 대신해주기 때문에, 자사서비스 서버가 공격당하더라도 민감한 개인정보는 빠져나가지 않는 보안적 장점이 있다고 한다.

0개의 댓글