무지를 아는 것이 곧 앎의 시작

Web

OAuth, OpenID

Alex96 2022. 11. 8. 16:36

인증과 인가

인증: 사용자의 신원을 확인

인가: 사용자가 자원에 접근할 수 있는지 권한을 확인

 

OAuth는 인가를 위한 프로토콜이다.

  • 자원의 소유자가 클라이언트에게 자원에 접근할 수 있는 엑세스 토큰을 발급
  • 해당 엑세스 토큰을 통해 자원에 접근이 가능

 

OAuth 1.0과 vs OAuth 2.0 차이

OAuth 2.0은 기존의 OAuth 1.0과 호환되지 않는 새로운 프로토콜.

기존의 OAuth 1.0은 데스크톱이나 휴대폰 애플리케이션에서 사용자가 원하는 서비스로 브라우저를 연 뒤 서비스를 인증하고, 서비스에서 애플리케이션으로 토큰을 복사하여 사용하는 방식.

브라우저를 왔다갔다하는 과정때문에 사용자 경험 측면에서 좋지 않음.

OAuth 2.0이 나타나며 이러한 인증 절차가 간소화 되었으며 몇가지 용어가 변경됨.

핵심 차이점

1.0: 암호화 과정 필요O, 1년 이상 긴 access token

2.0: 암호화 과정 필요X, 짧은 access token + refresh token

 

1.0은 별도의 로그인 브라우저에서 클라이언트로 access token을 복사하기 때문에 별도로 암호화 해서 클라이언트에서 저장한다. 하지만 2.0은 refresh token을 함께 사용하여 access token의 만료 기간을 짧게 하는 방식으로 보안을 추가했고, refresh token의 경우는 https에 암호화를 위임한다.

 

OpenID

OAuth가 인가를 위한 프로토콜이라면 OpenID는 인증을 위한 프로토콜

OpenID 공급자의 자격을 증명하여 다른 애플리케이션에 로그인 가능

 

OpenID 1.0, OpenID 2.0, OpenID Connect

1.0 → 2.0 → Connect 순으로 발전해옴

1.0과 2.0은 더이상 사용하지 않음

OpenID Connect

OAuth 2.0 상위에 존재하는 인증 프로토콜이며 access token과 함께 id token(JWT를 사용)을 발급.

OpenID Connect에서 발급하는 id token은 access token과 어떤 차이가 있나?

id token은 별도의 요청 없이 해당 token에 유저 프로필에 대한 정보를 담고 있다. 따로 요청 없이 id token을 decode하여 유저 프로필에 대한 정보를 얻을 수 있음.

 

 

Ref

https://www.samsungsds.com/kr/insights/oidc.html

https://yeonyeon.tistory.com/264