Backend & Spring (스프링)/Authorization & Authentication

OAuth 2.0 & OIDC with JWT

jw92 2023. 11. 29. 21:23

 Authorization (허가) Authentication (인증) 총 정리 - MAC AEAD 에 이어지는 글

9. JWT (JSON Web Tokens)

2024.12.13 - [Backend & Spring (스프링)/Authorization & Authentication] - JWT (JSON Web Tokens) - JWS와 JWE

 

JWT (JSON Web Tokens) - JWS와 JWE

JWT는 Token 기반 인증에서 RFC 7519 의 표준으로 지정된 Token ※ Claim이란 어떠한 주제에 관해 주장하는 정보이며, name/value pair로 표시한다. 9-1. Javascript Object Signing and Encryption (JOSE)Claim을 안전하게

jw92.tistory.com

 

10. OAuth 2.0 (Open Authorization)

OAuth는 Access Delegation (액세스 위임)을 위한 개방형 표준으로,
일반적으로 인터넷 사용자가 암호를 제공하지 않고
웹사이트나 애플리케이션에 다른 웹사이트의 정보에 대한 액세스 권한을 부여하는 방법으로 사용한다.
 
Amazon, Google, Facebook, Microsoft 및 Twitter와 같은 회사에서 사용자가 자신의 계정에 대한 정보를 제3자 응용 프로그램이나 웹 사이트와 공유할 수 있도록 허용하는 데 사용된다.

OAuth가 적용되지 않는 세계에서 Third-party Application이 Google Drive에 사진을 업로드하고 싶다.
어떻게 해야될까?
Google Account의 아이디(email)와 비밀번호를 Third-party Application에 제공해야 한다.
 
사용자가 이러한 앱을 쓰려고 할까?
 
이러한 문제를 해결하기 위해 나온 것이 OAuth이다.

OAuth 프로토콜은 Resource Owner(사용자)가 Client (Third-party app)에 Server Resournce를 접근할 수 있는 secure delegated access(보안 위임 액세스) 방법을 제공한다.
 

Resource Owner가 ID/Password같은 credentials을 제공하지 않고도
Server Resource에 대한  third-party access를 승인할 수 있게 해준다.
이 OAuth는 HTTP를 기반으로 설계 되었으며,
Authorization Server가 Resource Owner에게 승인받아 Client에게 Access Token을 발급해주는 것을 허용한다.
Client는 이 Access Token을 사용하여 Resource Server의 protected resources에 접근한다.

 

11. OIDC (OpenID Connection)

OAuth는 Authorization을 하기 위한 Protocol이며, 권한 부여를 위한 Access Token을 발급해준다.

OIDC는 OAuth 2.0을 기반으로 만들어져서 OAuth  중 ID 계층을 담당한다.
Scope를 openid로 지정하면 Authorization Server는 Access Token과 함께 사용자 인증에 필요한 정보를 ID Token으로 같이 발급해주는 것이다.
 

Login with ... 
 

OAuth만 가지고도 인증할 수 있잖아??

맞다. 하지만 OAuth만으로 인증하기 위해서는
Authorization Server로부터 Access Token을 발급받아 이를 Resource Server에 다시 요청해야한다.

OIDC를 지원한다면 통신량을 절반으로 줄일 수 있는 것이다.
사용자 관점에서는 OAuth를 쓰나 OIDC를 쓰나 변화는 없을 것 같다

12. SAML (Security Assertion Markup Language)

하나의 자격 증명으로 한 번만 로그인하여 여러 앱에 액세스할 수 있도록 해 주는 기술
사용자가 로그인하면 ID 공급자가 사용자를 확인한 후 사용자가 액세스하려는 사이트, 서비스 또는 앱의 서비스 공급자 측으로 인증 데이터를 전달한다.
 
OIDC와 비슷하나 OAuth 기반이 아니며 JWT가 아닌 XML SAML을 이용하여 인증.
 

13. SSO (Single Sign On)

SAML / OAuth / OIDC 등을 이용하여 한 번의 로그인으로 여러가지 어플리케이션을 이용가능하게 해주는 것