[Security] OpenID Connect
in Development on Server, Security, 개념
“해당 포스팅은 우아한Tech의 [10분 테코톡] 토닉, 후디의 인증과 인가 - 부족사회부터 소셜로그인까지을 참고하여 포스팅하였습니다. 영상을 제작해주신 우아한Tech와 토닉, 후디님에게 감사드립니다.”
#목차
OpenID Connect
OpenID Connect 개요
클라이언트의 단점
- 우리가 일반적으로 직접 인증기능을 구축하기 위해선 사용자로부터 ID/PW등과 같은 개인정보를 직접 제공 받아야 한다.
- 그런데,
보안사고
가 터지면 큰일이다…
사용자의 단점
- 사용자 또한
불편함
을 가지고 있게 된다. - 지금 처럼 굉장히 많은 서비스를 이용하는 시대에서 각 서비스마다 ID/PW를 기억하고 있어야하는
불편함
이 생긴다.
OpenID의 시작
- 이런 아이디어에서 OpenID가 시작 되었다
- OpenID Foundation에서 추진하는
개방형 표준 및 분산 인증 프로토콜
이다
OpenID의 장점
“OpenID를 사용하면
새 비밀번호를 만들 필요 없이
” 기존 계정을 사용하여 여러 웹사이트에 로그인할 수 있다.”
OpenID의 2가지 버전
- OpenID도 크게 두 가지 주체로 나눌 수 있다
- IdP : 구글, 카카오와 같이 OpenID 서비스를 제공하는 당사자
- RP : 사용자를 인증하기 위해 IdP에
의존
하는 주체
OpenID 버전
“해당 포스트에서는
3세대
OpenID Connect(OIDC)를 포스팅”
OpenID Connect 정의
“OpenID Connect 1.0은 OAuth2.0 프로토콜 위에 있는 간단한 ID 계층. 이를 통해 클라이언트는 REST와 유사한 방식으로
최종 사용자의 신원과 기본적인 프로필 정보
를 얻을 수 있다”
OIDC와 OAuth2.0
OIDC와 OAuth2.0의 목적 차이
“OAuth2.0과 OpenID Connect의
목적 차이
”
- OAuth2.0 목적 : Access Token을 발급받고
리소스에 접근
하기 위해 발급 - OpenID Connect 목적 : ID Token을 발급받고 ID Token으로부터
사용자 식별 정보
를 얻기 위해 사용된다
ID Token
“사용자 식별정보를 담고 있는
JWT토큰
”
ID Token의 발급 방법
“Client가 Authorization Server로 OAuth2.0 인증을 요청 할 때
Scope에 OpenID를 추가
하면,ID Token
을 받을 수 있다”
OAuth2.0의 단독 유저 식별의 문제점
“OAuth2.0은 사용자에 대한 정보를
명시적으로 제공하지 않는다
”
- OAuth2.0을 통해서 발급받은 Access Token으로는 서버의 리소스는 접근 권한이
가능
하지만, 발급받은 Access Token만으로는 사용자 정보 프로필은획득 불가
- OpenID Connect를 통해서 발급받은 ID Token으로는 서버의 리소스는 접근 권한이
불가능
하지만, 발급받은 ID Token만으로는 사용자 정보 프로필은획득 가능
유저 프로필 가져올 때
“OAuth2.0만을 사용했을 땐,
통신이 두 번 발생
”
- Access Token을
요청
할 때 - Access Token을 가지고 유저 프로필 정보를
요청
할 때
“반면, OpenID Connect를 사용하면
한 번의 통신
으로도 유저 프로필 정보를획득
”
- Access Token과 ID Token을
한 번에 요청
하고 한 번에 전달받게 된다 - 이어서 후속적인 조치 없이 Client는 방금 전달받은 ID Token을 디코드 하여
유저 프로필 정보를 획득
Back to [Security] OAuth