1 minute read

OAuth2 란?

  • OAuth는 인증에 대한 프로토콜
  • 사용자의 ID와 비밀번호 없이도 접근권한을 위임 받을 수 있는 표준 인증 프로토콜이다.
  • 다른 웹사이트에서 제공하는 API를 이용하여 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 수단으로 사용된다.


SpringBoot OAuth2 Client

  • SpringBoot 프레임워크에서 OAuth 2.0 프로토콜을 사용하여 인증을 수행하는 클라이언트


주요 행위자

  • 사용자 / 리소스 소유자 : 인증을 담당하고, 클라이언트와 리소스 공유에 대한 동의를 제공하는 최종 사용자
  • 사용자 에이전트 : 사용자가 사용하는 브라우저를 의미
  • 클라이언트 : 액세스 토큰을 요청하는 애플리케이션
  • 인증서버 : 사용자/클라이언트를 인증하는데 사용되는 서버
  • 리소스서버 : 요청된 리소스에 대한 액세스를 제공하는 api


주요 용어

  • 제공자 : 사용자가 로그인하려는 서비스(Google,Naver,Kakao)
  • 인가코드(Authorization Code) : 사용자에게 인가를 받기 위한 단계 중 하나, 클라이언트가 애플리케이션에 대한 권한요청, 제공자에게 요청하여 반환되는 코드
  • 접근토큰 : 사전에 발급 받은 인가 코드를 기반으로 클라이언트에게 발급되는 트콘


인증, 리소스 서버

인증 서버(Authorization Server)

  • OAuth2 프로토콜에서 인증과 권한 부여를 담당하는 서버입니다. 클라이언트는 사용자의 권한을 인증 서버에 요청하고 인증 서버는 사용자의 동의를 얻어 액세스 토큰을 발급합니다.

리소스 서버(Resource Server)

  • 인증 서버로부터 발급받은 액세스 토큰을 사용하여 보호된 리소스에 대한 클라이언트의 요청을 인가하고 응답하는 서버입니다.


특징

  • 간편한 설정 : SpringBoot의 자동 설정 기능을 사용하여 OAuth2 클라이언트를 빠르게 설정가능
  • 다양한 인증 공급자 지원 : Google,Naver,Kakao 등 많은 인증 공급자 지원
  • 커스터마이징 가능 : 설정 커스터마이징, 인증 공급자 추가하여 사용가능
  • 보안 : Spring Security를 사용하여 인증과 권한 부여


인증 승인 방식 종류

  • Password Grant : 클라이언트는 사용자의 아이디와 패스워드를 사용하여 액세스 토큰 요청
  • Client Credentials Grant : 자신의 이름과 패스워드를 사용하여 액세스 토큰 요청
  • Authorization Code Grant : 클라이언트는 권한 부여 서버에서 권한 부여 코드를 요청하고, 이를 액세스 토큰으로 교환합니다.
  • Implicit Grant : 클라이언트는 권한 부여 코드를 먼저 요청하는 대신, 직접 액세스 토큰 요청
  • Refresh Token Grant : 클라이언트는 리프레시 토큰을 사용하여 새로운 액세스 토큰을 요청할 수 있습니다.
  • JWT Grant : 클라이언트는 JSON Web Token (JWT)을 어설션으로 사용하여 액세스 토큰을 요청합니다.
  • SAML Extension Grant : 클라이언트는 보안 어설션 마크업 언어 (SAML) 어설션을 사용하여 액세스 토큰을 요청합니다.
  • Kerberos OAuth2 Grant : 클라이언트는 Kerberos 티켓을 어설션으로 사용하여 액세스 토큰을 요청합니다.
  • NTLM 그랜트 : 클라이언트는 Windows NT LAN Manager (NTLM) 인증 메시지를 사용하여 액세스 토큰을 요청합니다.


권한 코드 승인 방식

  • 클라이언트가 사용자 인증을 받기 위해 인가 서버(Authorization Server)에 인증 코드를 요청, 이를 이용하여 액세스 토큰을 발급받는 과정

카테고리:

업데이트:

댓글남기기