- OAuth
- 개요
인가를 위한 기술이다.인증은 유저가 직접하고,권한은 서비스에게 준다.
- 기본적인 개념
- 인증(Authentication)
- 사용자가 맞는지 진위를 확인한다.
- 인가(Authorization)
- 권한을 위임해 준다.
- Rule
- 유저
- Resource Owner
- 인증을 수행하는 주체
- Resource Owner
- 서비스
- Client Third-party Application
- 권한을 위임받는 주체
- Client Third-party Application
- 구글
- Authorization Server
- 인증을 검증하고 권한을 부여하는 주체
- Resource Server
- 인가를 수행하고 리소스를 제공하는 주체
- Authorization Server
- 유저
- 인증(Authentication)
- 버전
- OAuth1.0
- Rule
- Resource Owner
- OAuth Client
- OAuth Server
- Resource Owner인증
- 인가 토큰 발급
- 보호된 리소스 관리
- 문제점
- Scope개념 없음
- 역할이 확실히 나눠지지 않음
- 토큰 유효기간 문제
- Client 구현 복잡성
- 제한적인 사용환경
- 웹 환경
- 1세대 웹환경
- Rule
- OAuth2.0
- Scope기능 추가
- 해당 토큰에 대해서 얼마나 접근권한이 있는가
- Client 복잡성 간소화
- OAuth1.0에서는 인가를 받을 때마다 request param에 매번 값을 채워줘야 하는 등의 번거로움이 있었다.
Bearer Token과TLS로 해결- Bearer Token
- 해당 토큰을 가지고 있는 것만으로도 인가해줌
- https강제
- Bearer Token
- 토큰 탈취 문제 개선
- 기존에 유효기간이 길었음
Refresh Token적용
- Grant
- 웹브라우저만 아니라 다양한 사용환경에서도 사용 가능
- Authorization Code
- Server to Server로 인증 후 토큰 발급
- Implicit
- 웹브라우저의 자바스크립트 기반 클라이언트에서 직접 로그인 후 토큰 발급
- Resource owner password credentials
- 직접적인 유저정보가 가기 때문에 스마트폰과 같은 기기에서 사용
- Client credentials
- Resource owner와 OAuth client과 동일할 때 직접 api를 호출해서 토큰 발급
- 웹 환경
- javascript와 스마트 기기와 더불어 사용
- Scope기능 추가
- OAuth2.1
- 더 보안적으로 민감한 사용처들의 프로토콜 채택
- OAuth2.0에서 많은 보안책이 필요했고, 이에 따라 많은 볼트원 방식의 RFC를 숙지하여야 했음. 이를 종합해 스펙화시킨게 OAuth2.1
- BCP
- Grant
- Implicit와 Resource owner password credentials는 spec-out하였다. 보안상 위험하다 판단되어
- Device Authoriation Grant
- 스마트폰, 애플워치와 같이 기기를 바꿔 인증할 수 있음
- PKCE(Proof code Key for Code Exchange)
- Authorization code grant에 추가된 PKCE
- 기존에는 인증코드를 탈취할 수 있는 취약점이 있었으나 이를 보안
- 시작 값에 Hash한 값을 보내고 토큰을 받을 때 Hash한 값의 원문을 보내서 시작 client와 끝 client가 같은 것을 확인한다.
- 탈취자는 hash를 역연산할 수 없기 때문에 탈취를 해도 원문을 모른다.
- Authorization code grant에 추가된 PKCE
- BCP(Best Current Practice)
- 기존의 Refresh Token 또한 life cycle을 1회성으로 변경
- Refresh Token을 1회 사용하면 없어진다.
- 웹 환경
- 다양한 IOT환경의 웹환경
- Open ID Connet
- 개요
- Oauth2.0기반 인증 계층
- Oauth2.0 + OpenID(JWT기반 Token인증) => OpenIDConnect
- Token엔 여러가지 정보가 포함되어 있다.
- 웹 환경
- 더욱 다양한 서비스 환경 속에서 간단하게 인증을 받을 수 있다.
- 개요
- GNAP(Grant Negotiation and Authorization Protocol)
- 인증/인가의 미래
- Oauth2.0의
grant가interaction으로 진화 - Interaction
- 요청할 때
시작과끝의 상호작용 방식을 json에 미리 기재해서 맞춘다.
- 요청할 때
- End user/Resource owner의 분리
- OAuth의 Resouce owner의 Resource접근인가와 Client와 상호작용하는 자연인을 분리
- GNAP Resource owner/GNAP End user
- API의 접근 범위, 정밀 제어 및 여러 토큰 요청 제어 가능
- 기존의 Bearer Token + mTLS/DPOP에서 JWK, 인증서 기반 Client 보안 내장으로 변경
- OpenID신기술 연동성
- 블록체인의 탈중앙화된 유저의 did적용 등
- OAuth1.0
- 요약`
- Oauth1.0
- 인가 프로토콜 개념제시, 브라우저 환경 동작
- OAuth2.0
- Client간소화, Refresh토큰 등장, 여러가지 Grant 추가
- OAuth2.1`
- 보안성 개선, IoT기기지원 및 모범사례의 스펙화
- OpenIDConnect
- 인증 계층 추가, API호출 없는 사용자 정보 확인
- GNAP
- Interaction확장, 현/미래 기술들과 호환
- Oauth1.0
- 개요