인증/보안 - OAuth

jeongjwon·2023년 5월 26일
0

OAuth

✅ 인증을 중개해 주는 메커니즘으로 보안된 리소스에 액세스 하기 위해 클라이언트에게 권한을 제공공하는 프로세스를 단순화하는 프로토콜

위와 같은 오늘의 집이라는 새로운 서비스에서 SNS 를 이용하여 로그인을 하려고 한다. 이때 이미 사용자 정보를 가지고 있는 웹 서비스(페이스북, 카카오톡, 네이버 등)에서 사용자의 인증을 대신해주고, 접근 권한에 대한 토큰을 발급한 후 이를 이용해서 서버에서 인증이 가능해진다.

➡️ 유저의 민감한 정보가 직접 Application 에 노출될 일이 없어 인증 권한에 대한 허가를 미리 사용자에게 구하고 사용자는 원하는 정보를 직접 선택할 수 있기(권한 영역을 설정) 때문에 더 쉽고 안전하게 서비스를 이용할 수 있다.

OAuth 인증 방식

Implicit Grant Type, Authorization Code Grant Type, Refresh Token Grant Type 에서 공통적으로 갖는 Grant Type는 Authorization Server 에서 Access Token 을 받아오는 방식을 말한다.

Implicit Grant Type

  1. 사용자가 Application 에 접속한다.
  2. Application 에서 Authorization Server 에 인증을 요청한다.
  3. Authorization Server 에서 인증 유효 검사를 한다.
  4. 검사가 성공적이라면 Authorization Server 에서 액세스 토큰을 발급하여 Application 에게 전달한다.
  5. 다시 Application 은 전달받은 액세스 토큰을 담아 Resource Server 로 사용자의 정보를 요청한다.
  6. Resource Server 는 액세스 토큰 유효 검사를 한다.
  7. 검사가 성공적이라면 Application 에 사용자 정보를 전달한다.

➡️ 기존 서비스에 로그인만 되어 있다면 새로운 서비스에게 바로 액세스 토큰을 내어줌으로써 보안성이 떨어진다.


Authorization Code Grant Type

  1. 사용자가 Application 에 접속한다.
  2. Application 에서 Authorization Server 에 인증을 요청한다.
  3. Authorization Server 에서 인증 유효 검사를 한다.
    <span style="background:#fff5b1"4. 검사가 성공적이라면 Authorization Server 에서 Authorization Code 을 발급하여 Application 에게 전달한다.
  4. 다시 Application 은 Authorization Server 로 전달받은 Authorization Code 을 전달한다.
  5. Authorization Server 에서 Authorization Code 인증 유효 검사를 한다.
  6. 검사가 성공적이라면 Authorization Server 에서 액세스 토큰을 발급하여 Application 에게 전달한다.
  7. 다시 Application 은 전달받은 액세스 토큰을 담아 Resource Server 로 사용자의 정보를 요청한다.
  8. Resource Server 는 액세스 토큰 유효 검사를 한다.
  9. 검사가 성공적이라면 Application 에 사용자 정보를 전달한다.

➡️ Implicit Grant Type 에서 Authorization Code 를 사용한 인증단계를 추가하므로써 비교적 더 안전해졌다. 그렇지만 액세스 토큰이 만료되었을 때, 매번 이 과정을 거쳐서 액세스 토큰을 재발급 받기는 사용자 환경에 있어 번거롭게 된다.

Refresh Token Grant Type

  1. 사용자가 Application 에 접속한다.
  2. Application 에서 Authroization Server 에 리프레시 토큰을 전달한다.
  3. Application Server 에서 리프레시 토큰 유효 검사를 한다.
  4. 검사가 성공적이라면 Application 에 액세스 토큰을 전달한다.
  5. 다시 Application 은 전달받은 액세스 토큰을 담아 Resource Server 로 사용자의 정보를 요청한다.
  6. Resource Server 는 액세스 토큰 유효 검사를 한다.
  7. 검사가 성공적이라면 Application 에 사용자 정보를 전달한다.

➡️ Authorization Code Grant Type 에서 액세스 토큰 재발급 과정 반복으로 인한 사용자 편의성이 감소를 해결하기 위해 액세스 토큰을 발급할 때 리프레시 토큰을 같이 발급해준다.

0개의 댓글