WEB/Security

OAuth 2.0 Open ID Connect + OAuth2.0 Client

Tony Lim 2022. 11. 18. 09:28
728x90

Open ID Connect

OAuth 2.0 을 확장하여 인증 방식을 표준화 한 OAuth 2.0 기반의 인증 프로토콜

scope 지정시 openid 를 포함하면 OpenID Connect를 사용이 가능하며 인증에 대한 정보는 ID Token 을 JWT형태로 반환된다.

Client가 User 의 id를 확인할 수있게 해주는 ID Token을 제공

 

햇갈릴만한 개념

OAuth2.0은 본래 인가(authorize) framework이다. 주로 Client(app)에서 인증하는 방법은 다음과 같다.
Auth server에서 access token 을 통해서 사용자의 정보를 resource server 를 통해서 받아와 인증을 할 수 있다.

Open ID는 인증(authenticate) 요청을 위한것 임으로 ID Token 을 통해서 인증을 처리할 수 있다. 안에 사용자 정보가 들어 있으니까

모든 인가서버(base-server-url)에서 사용할 때 해당 문서 경로는 고정이다. 


ID Token and Scope

id token은 client app에서 인증을 위해 사용되는 용도
access token 은 resoruce server에서 자원을 가지고오는 용도

id token 만 가지고 사용자가 인증되었음을 증명할 수 있다.
id token은 auth server의 private key로 서명되어 있다. (토큰의 출처가 보장되고 변조되지 않았음을 보장)
client는 public key로 id token 을 검증한다.

 

OpenID Provider(OP) = OpenID 제공자로 최종 사용자를 인증하고 인증 결과와 사용자에 대한 정볼르 신뢰 당사자에게 제공할 수있는 OAuth2.0 서버 

Relying Party(RP) = OpenID Provider를 사용하는 app(client)

1. RP는 OP에 권한 부여 요청
2. OP는 User(최종 사용자) 를 인증하고 권한을 얻음
3. OP는 ID token + access token 을 RP(client)에게 줌
4. RP 는 access token을 사용하여 UserInfo endpoint에 요청을 보내고 받은 정보로 인증해도 되고 
ID token으로 인증가능하다.

 

response type이 id_token을 지원해야한다. 복수로 넣어줄수 있다.( code token id_token )
keycloak에서는 복수로 넣어주는것을 지원하지만 Spring Security는 code만 지원한다.
request에 포함된 nonce가 response JWT claim 에 동일한 값이 들어 있는것을 Client에서 확인하고 인증을 해야한다.(Implict 요청일 경우 필수 nonce를 넣어줘야함)


OAuth2.0 Client

인가서버 및 리소스 서버와의 통신을 담당하는 클라이언트의 기능을 필터 기반으록 구현한 모듈
간단한 설정만으로 OAuth2.0 인증 및 리소스 접근 권한, 인가서버 엔드 포인트 통신등의 구현이 가능하며 커스터마이징의 확장이 용이하다.

OAuth 2.0Login  API

Client를 사용하는 User를 Oauth 2.0 Provider 나 Open ID Connect 계정으로 로그인 할 수 있는 기능을 제공한다.
구글계정으로 로그인 , 깃허브 계정으로 로그인 등 글로벌 서비스 프로파이더를 통해 제공한다.
권한 부여 방식은 authorization code를 사용한다.

OAuth2.0 Client API

인가서버의 권한 부여 유형에 따른 엔드포인트와 직접 통신할 수 있는 API를 제공
Client Credentials, Resource Owner Password Credentials , Refresh Token 나머지 권한 부여 유형을 구현할 수 있다.
리소스 서버의 보호자원 접근에 대한 연동 모듈을 구현 할 수 있다.

 

 

 

https://www.inflearn.com/course/%EC%A0%95%EC%88%98%EC%9B%90-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0/dashboard

 

스프링 시큐리티 OAuth2 - Spring Boot 기반으로 개발하는 Spring Security OAuth2 - 인프런 | 강의

스프링 시큐리티 OAuth2의 기본 개념부터 API 사용법과 내부 아키텍처를 학습합니다. 아울러 OAuth2 Client, OAuth2 Resource Server, Authorization Server를 통합하여 연동하는 방법을 살펴보고 자체 인가 서버를

www.inflearn.com

 

728x90

'WEB > Security' 카테고리의 다른 글

OAuth 2.0 Client - oauth2Login()  (1) 2022.11.22
OAuth 2.0 Client Fundamentals  (0) 2022.11.18
OAuth 2.0 권한부여 유형  (0) 2022.11.17
OAuth 2.0 용어 이해  (0) 2022.11.16
Spring Security Fundamentals  (0) 2022.11.16