Spring/Spring Security

[JWT] 2-3. Practical Application: OAuth2 & OpenID

noahkim_ 2025. 7. 22. 12:11

1. JWTs and OAuth2

  • 클라이언트가 보호된 자원에 접근할 권한을 위임받는 프레임워크

 

JWT를 Access Token으로 사용

  • 토큰 안에 권한 범위, 사용자 정보, 접근 권한 등을 직접 담을 수 있음
  • 토큰 유효기간을 지정할 수 있음
  • 디지털 서명이 되어있어 resource server에서 자체적으로 검증이 가능함 (authorization server에 인증 요청을 하지 않아도 됨)
  • 많은 IdP들이 JWT 형식으로 Access Token을 발급함

 

JWT를 Refresh Token으로 사용

  • Authorization Server에 보내서 새 Access Token을 발급받음

 

2. JWTs and OpenID Connect

OpenID Connect Flows and JWTs

  • Authorization Code Flow: 토큰을 백체널에서 발급받는 형식
  • Implicit Flow: Authorization Code를 거치지 않고 /authorize 응답에서 토큰을 바로 받는 방식

 

과정) Authorization Code Flow

더보기

1. 클라이언트가 /authorize로 인증 요청
2. 사용자가 로그인
3. Authorization Server가 Authorization Code 반환
4. 클라이언트가 Code를 /token에 제출
5. ID Token, Access Token, 필요하면 Refresh Token 발급

 

 

3. Example

  • authorization server를 두어 특정 로그인 제공자에 종속되지 않고, 로그인할때마다 다른 IdP로 인증 가능함

 

SSO 시나리오

  • 유저가 처음 app1.com으로 로그인하면 Auth0에서 인증 및 권한 허용
  • 이후 app2.com 접속 시 로그인 화면 없이 자동 로그인됨
  • 두 앱이 서로 연결돼 있지 않아도, Auth0가 동일하면 가능함
    • 사용자 세션이 유지되고 있어 서, 인증 상태를 기억하고 새 토큰을 발급해줌