OAuth란?
사용자가 어떤 애플리케이션을 이용할 때, 외부 서비스의 API를 이용하여 로그인 하도록 해주는 것(네이버 아이디로 로그인 등)
배경
- OAuth가 사용되기 전에는 보안이 취약한 구조
- 각 애플리케이션이나 웹 사이트마다 개별적인 인증 방식으로 아이디와 비밀번호를 사용하여 로그인(사용자 불안감)
- OAuth는 제각각인 인증방식을 표준화한 것으로 인증을 공유하는 애플리케이션끼리는 별도 인증과정 불필요
과정
- Access Token : 임의의 문자열 값으로 이 토큰을 발급해준 서비스만 알 수 있다, 이 토큰값과 관련된 고객의 정보를 우리는 해당 서비스에 요청할 수 있다. 해당 서비스는 이 토큰을 검증하고, 발급된게 맞다면 해당 고객의 정보를 넘겨준다.
- 고객이 해당 서비스(네이버)에 로그인하면 네이버는 Access Token을 건네준다.
Access Token을 넘겨받는 과정
- Redirect : 리다이렉션 되면서 토큰값은 URL으로 건네준다.(네이버에 서비스를 등록하는 과정에서 redirect_uri 등을 합의해 피싱을 방지한다)
- 이후 토큰을 이용해 네이버의 API에 따라 사용자 정보를 요청한다.
참고
- '인증(Authentication)' 프로토콜이 아닌 '인가(Authorization)' 프로토콜
- 인증 : 접근 가능함을 확인하는 과정
- 인가 : 허가, 접근 권한을 관리
- 사용자의 확인(인증) 과정을 통해 권한을 부여(인가)
'CS' 카테고리의 다른 글
[CS]함수 호출 방식의 구분(call-by-reference) (0) | 2021.06.24 |
---|---|
좋은 코드란 무엇일까? (0) | 2021.05.10 |
[CS] XSS와 CSRF 비교 (0) | 2021.05.06 |
[네트워크]Web 서버와 WAS 차이 (0) | 2021.04.22 |
[CS]디자인 패턴 (0) | 2021.04.21 |