본문 바로가기
Research/Security

OAuth 2.0 개념

by RIEM 2023. 12. 9.

https://inpa.tistory.com/491

OAuth란 무엇인가?

  • OAuth는 인터넷 유저들이 직접 정보를 기입하지 않고 자신이 가입한 다른 사이트의 정보에 접근 권한을 부여하는 방식으로 인증을 하는 개방형 표준 방식이다.

OAuth는 왜 하냐?

  • Access Token을 발급받기 위함이다

OAuth 2.0과 1.0의 차이는?

  • 1.0의 보안 문제를 개선한 것이 2.0

OAuth의 구성요소는?

  • Resource Owner : 개인정보(resource) 소유자, 즉 로그인하는 유저
  • Client : 어플리케이션 서버. Resource server에 요청하는 client의 역할
  • Authorization Server : 권한을 부여해주는 서버
    • 사용자는 ID, pW를 넘겨 authorization code를 발급받는다
    • client는 authorization code를 넘겨 token을 발급 받음
  • Resource Server: 유저 개인정보를 가진 어플리케이션 회사 서버(구글, 카카오 등). Client가 이 곳으로 토큰을 넘기면, 리소스 서버가 개인 정보로 응답해준다
  • Access Token : 자격 증명. Authorization 서버로부터 받는다.
  • Refresh Token : 자격 증명. Authorization 서버로부터 받는다.

![[../../z.assets/Screen Shot 2023-01-27 at 1.56.02 AM.jpg]]

  1. user -> client : 로그인 시도
  2. client -> user : Client ID, Redirect_URI
  3. user -> auth server : 로그인 페이지 요청
  4. auth server -> user : 로그인 페이지 제공
  5. user -> auth server : ID, pw 입력
  6. auth server : authorization code 발급
  7. user -> client : redirect_uri, authorization code 전달
  8. client -> auth server : access token 요청
  9. auth server -> client : access token 요청
  10. client -> user : 인증 완료 및 로그인 성공
  11. user -> client : 서비스 요청
  12. client -> resource server : access token으로 api 호출
  13. resource server -> client : auth code 검증 및 서비스 제공
  14. client -> user : 서비스 제공

client(유저가 사용하는 서비스)는 Resource Owner(사용자) 대신하여 로그인 해준다. 이때 필요한 유저 정보는 Resource 서버로부터 얻는다.

  • Resource Owner로부터 동의
  • Resource Server로부터 client 신원 확인

유저(Resource Owner)의 입장

  • client(어플리케이션)이 내 정보 조심스럽게 다루는거 맞어? 나안테 동의 구해

카카오(Resource Server) 입장

  • 유저의 정보를 대리 인증 요청하는 client(어플리케이션)가 진짜 client 맞냐? client 구분 코드 보내서 확인

서비스를 등록하면 Client가 받게 되는 것

  • client ID : 어플리케이션 식별자 ID
  • client secret : 식별자 비밀번호
  • Authorized redirect URIs : Authorized code 전달하는 통로. Resource Server가 가지고 있다가 client에게 권한 부여 시 사용. client와 Resource Server 간 유효성 검사 시에도 사용. 예를 들어 네이버 서버가 사용자 개인 정보를 콜백할 주소.

만약 Access Token 기간이 만료되면 어떻게 되나요?

  • 만료가 된 Access Token으로 API 요청을 하면 401에러 발생한다
  • 에러가 발생하면, 보관중이던 Refresh Token을 보내 새로운 Access Token을 발급받아 로그인 인증을 유지한다
  • Refresh Token으로 Access Token을 재발급해야 한다
  • 일반적으로 Access Token, Refresh Token 함께 발급해줌

 

Refresh Token은 어떤 방식으로 발급되나요?

  • 발급 방식, 갱신 주기 모두 OAuth 제공하는 Resource Server마다 다르다

Resource owner의 승인 여정

 

질문

Authorization Server와 Resource Server의 차이는 무엇인가

'Research > Security' 카테고리의 다른 글

세션 기반 인증과 토큰 기반 인증의 차이  (0) 2023.11.01

댓글