[TIL] OAuth 2.0-동작 매커니즘

link717·2021년 10월 4일
0

TIL

목록 보기
47/53
post-thumbnail

🌼 OAuth 2.0?

OAuto 2.0은 Facebook, Google과 같은 애플리케이션이 HTTP 서비스에서 사용자 계정에 대한 제한된 액세스 권한을 얻을 수 있도록 하는 인증 프레임워크이다. 사용자 인증을 사용자 계정을 호스팅하는 서비스(Resource)에 위임하고 타사 응용 프로그램(Client)이 해당 사용자 계정에 액세스할 수 있도록 권한을 부여하여 작동한다. OAuto 2는 모바일 장치는 물론 웹 및 데스크톱 응용 프로그램에 대한 인증 흐름을 제공한다.

🌼 전통적인 방식

  • Resource Owner에게 Resource Server에 사용가능한 유효한 id, pw를 client에서 수집한 뒤, 수집한 정보를 client에서 저장한 뒤 필요할 때마다 해당 정보로 Resource Server에 접근하는 방식으로 사용하였다.

    • 장점: OAuth에 비해 엄청 쉬우며 모든 정보를 제한 없이 가져올 수 있다.

    • 단점: 장점을 상쇄하고도 넘어설 보안의 이슈가 있다.

🌼 OAuth 2.0 방식

  • Resource Owner: 리소스 소유자는 자신의 계정에 액세스할 수 있도록 승인하는 사용자이다. 사용자 계정에 대한 애플리케이션 액세스는 부여된 권한 범위로 제한된다.

  • Client: 클라이언트는 사용자의 계정에 액세스하려는 응용 프로그램이다.(즉, 우리의 서비스) 사용자의 계정에 액세스 하려면 사용자의 승인을 받아야하고 API에서 승인을 검증해야 한다.

  • Resource Server: 인증된 사용자 계정을 호스팅한다.

  • Authorization Server: 권한 부여 서버는 사용자의 신원을 확인한 다음 응용 프로그램에 액세스 토큰을 발급하는 역할을 한다.

    OAuth 2.0을 사용하기 이전에 Resource Server에 Resource를 사용할 것이라고 등록하는 과정이 필요하다. 해당 과정을 통해 우리는 Client ID와 Client Secret을 발급받는다. OAuto 2.0 과정을 손쉽게할 수 있도록 Resource를 제공하는 회사에서 SDK를 제공하기도 한다.

  • Client ID: 서비스 API에서 Client를 식별하는데 사용하는 공개적으로 노출된 문자열로 사용자에게 제공되는 인증 URL을 빌드하는데에도 사용된다.

  • Client Secret: Client가 사용자 계정에 대한 액세스를 요청할 때 서비스 API에 애플리케이션의 ID를 인증하는데 사용되며 애플리케이션과 API 간에 비공개로 유지되어야 한다.(Secret 정보는 절대로 노출되면 안된다.)

    1-2. Resource Owner의 Resource를 Client에서 사용하려고 할 때 User는 액세스 권한 인증 과정을 Resource Server에 위임하고 해당 인증 과정이 끝나면 결과값으로 code를 전달받게 된다.

    3-4. 전달받은 code와 Client ID, Client Secret을 사용하여 Resource Server에 우리가 User가 인증한 Client라는 것을 인증하고 access token을 발급받는다. 보통 이렇게 발급받은 token은 서버에 저장한다.

    5-6. 필요한 정보가 있을 경우, 그 때 마다 access token을 사용하여 Resource Server에 인증과정을 거친 뒤 해당 정보를 취득하고 이를 Resource Owner에게 제공한다.

출처: digital Ocean, 생활코딩

profile
Turtle Never stop

0개의 댓글