반응형
OAuth2란?
다양한 플랫폼 환경에서 인증 및 권한 부여를 위한 표준 프로토콜
OAuth 방식이 등장하기 전에는 다른 서비스의 리소스를 가져오기 위해서는 다른 사이트의 ID와 PW를 직접 입력받아 저장하여 필요할 때마다 불러와서 사용했다.
하지만 ID와 PW를 공개하는것과 보안등의 문제가 생기므로 이를 해결하기 위해 탄생한 표준 프로토콜이다.
ex) 구글로 로그인, 페이스북으로 로그인, 카카오로 로그인
OAuth2 용어
인가 승인 유형(Authorization Grant Types)
인가 코드 승인(Authorization Code)
리스소 접근을 위한 사용자 명과 비밀번호, 권한 서버에 요청해서 받은 권한 코드를 함께 활용하여 리소스에 대한 엑세스 토큰을 받는 방식입니다.
- 클라이언트가 파리미터러 클라이언트 ID, 리다이렉트 URI, 응답 타입을 code로 지정하여 권한 서버에 전달합니다.
- 응답 타입은 code, token 이 사용 가능합니다.
- 응답 타입이 token 일 경우 암시적 승인 타입에 해당합니다.
- 정상적으로 인증이 되면 권한 코드 부여 코드를 클라이언트에게 보냅니다.
- 성공적으로 권한 부여 코드를 받은 클라이언트는 권한 부여 코드를 사용하여 엑세스 토큰을 권한 서버에 추가로 요청합니다.
- 이때 필요한 파라미터는 클라이언트 ID, 클라이언트 비밀번호, 리다이렉트 URI, 인증 타입 입니다.
- 마지막으로 받은 엑세스 토큰을 사용하여 리소스 서버에 사용자의 데이터를 보냅니다.
암시적 승인(Implicit)
암시적 승인권한 부여 코드 승인 타입과 다르게 권한 코드 교환 단계 없이 엑세스 토큰을 즉시 반환받아 이를 인증에 이용하는 방식입니다.
- 클라이언트가 파리미터러 클라이언트 ID, 리다이렉트 URI, 응답 타입을 code로 지정하여 권한 서버에 전달합니다.
- 응답 타입은 code, token 이 사용 가능합니다.
- 응답 타입이 token 일 경우 암시적 승인 타입에 해당합니다.
- 정상적으로 인증이 되면 권한 코드 부여 코드를 클라이언트에게 보냅니다.
- 응답 해준 Access Token 이 유효한지 검증 요청을 합니다.
- 요청 받은 Access Token 정보에 대한 검증에 대한 응답값을 돌려줍니다.
- 유효한 Access Token 기반으로 Resource Server와 통신합니다.
자원 소유자 패스워드 승인(Resource Owner Password)
- 인증을 진행합니다. 대부분 ID, Password를 통해서 자격 증명이 진행됩니다.
- 넘겨 받은 정보기반으로 권한 서버에 Access Token 정보를 요청합니다.
- Access Token 정보를 응답 받습니다. 이때 Refresh Token 정보도 넘겨 줄 수도 있습니다.
- Access Token 기반으로 Resource Server와 통신합니다.
클라이언트 인증 정보 승인(Client Credentials)
클라이언트 자격 증명 타입클라이언트가 컨텍스트 외부에서 액세스 토큰을 얻어 특정 리소스에 접근을 요청할 때 사용하는 방식입니다.
- Access Token 정보를 요청합니다.
- Access Token 정보를 응답합니다. 이때 Refresh Token 정보는 응답하지 않는 것을 권장합니다. 별다른 인증 절차가 없기 때문에 Refresh Token 까지 넘기지 않는 것이라고 생각합니다.
- Access Token 기반으로 Resource Server와 통신합니다.
어떤 Grant Type을 사용해야 할까
Grant란 Access Token을 얻기위한 방식이다.
Grant는 Client 타입에 의해 결정된다.
반응형
'ETC' 카테고리의 다른 글
카카오에서 일하는 방식 (0) | 2021.09.15 |
---|---|
Head of Engineering의 역량과 커뮤니케이션 (0) | 2021.09.15 |
RESTful API란 무엇인가? (0) | 2021.09.12 |
SSO(Single Sign-On)란 무엇인가? (0) | 2021.09.10 |
JWT(JSON Web Token)이란 무엇인가? (0) | 2021.09.10 |