OAuth에 대해서...

0

면접 스터디

목록 보기
4/8

OAuth란?

인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.

OAuth 참여자

OAuth 동작에 관여하는 참여자는 크게 세 가지로 구분할 수 있다.

  • Resource Server: 클라이언트가 제어하고자 하는 자원을 보유하고 있는 서버
    facebook, google, twitter등이 여기에 속한다.

  • Resource Owner : 자원의 소유자. 클라이언트가 제공하는 서비스를 통해 로그인하는 실제 유저가 여기에 속한다.

  • Client : Resource Server에 접속해서 정보를 가져오고자 하는 클라이언트(웹 어플리케이션)이다.

OAuth는 왜 쓰는걸까?

결론부터 이야기하면, 다른 서비스의 회원 정보를 안전하게 사용하기 위함이다. 우리의 고객이 안전하게 다른 서비스의 정보를 우리 서비스에 건네주기 위한 방법으로서 사용이 되는 것이다.
이 OAuth 인증에서 핵심이 되는것이 바로 Access Token이다.

Access Token

Access Token은 임의의 문자열 값으로, 이 문자열의 정체는 해당 토큰을 발급해준 서비스만 알 수 있다. 이 Access Token을 이용해, 토큰값과 관련된 고객의 정보를 해당 서비스에 요청하고 해당 서비스는 이 토큰을 검증해서 우리에게 해당 고객의 정보를 넘겨주게 되는 것이다.
즉, Access Token의 존재 자체가 고객이 정보를 넘겨주는 것을 동의한다는 징표라고 할 수 있다.

Redirect

HTTP에는 리다이렉트 메시지가 존재한다. 서버에서 클라이언트에게 어디로 가라고 지정해주는 것이 바로 리다이렉트이다.

리다이렉트를 통해 고객이 해당 서비스에 로그인을 하고, 해당 서비스는 우리 서비스로 정보를 전해준다. 이때 전달되는 정보는 URL의 query string으로 넘겨주게 된다.

여기서 발생할 수 있는 문제는 XSS 공격이나 피싱사이트를 통해 redirect_uri를 공격자가 원하는 사이트로 바꿀 수 있다. 이를 막기 위해서 각 사이트는 OAuth를 사용하기 전에 해당 서비스에 등록 절차를 밟아야 한다. 이 등록 과정에서 redirect_uri도 사전에 합의를 보기 때문에, 정해진 uri외에 다른 값으로 로그인 요청페이지로 보내면, 해당 서비스에서는 보내주지 않을 것이다.

참고 사이트
https://tecoble.techcourse.co.kr/post/2021-07-10-understanding-oauth/
https://velog.io/@undefcat/OAuth-2.0-%EA%B0%84%EB%8B%A8%EC%A0%95%EB%A6%AC

profile
우주와 같은 프로그래밍 세상

0개의 댓글