18. JWT, Refresh, Access Token에 대해서 설명해주세요.
JWT (JSON Web Token):
- JWT는 클레임 기반의 토큰으로, 정보를 JSON 객체로 안전하게 전송하기 위한 개방형 표준입니다.
- JWT는 페이로드에 클레임을 저장하고, 시그니처를 사용하여 토큰의 무결성을 보장합니다.
- 주로 사용자 인증 및 권한 부여를 위해 사용됩니다.
Refresh Token:
- Refresh Token은 인증된 사용자를 계속해서 인증할 수 있는 특별한 토큰입니다.
- Access Token의 유효 기간이 만료되었을 때, Refresh Token을 사용하여 새로운 Access Token을 발급받을 수 있습니다.
- 주로 보안을 강화하고, Access Token의 유효 기간을 관리하기 위해 사용됩니다.
Access Token:
- Access Token은 클라이언트가 서버에 리소스에 접근하기 위한 권한을 인증하는 데 사용되는 토큰입니다.
- 주로 OAuth나 OpenID Connect와 같은 인증 프로토콜에서 사용되며, 사용자의 인증 및 권한을 확인하여 API 요청을 처리합니다.
- 일반적으로 짧은 유효 기간을 가지며, 보안을 강화하기 위해 주기적으로 갱신됩니다.
19. OAuth에 대해서 설명해주세요.
OAuth (Open Authorization)는 사용자가 자원의 소유자인 서비스에게 다른 웹 사이트 또는 애플리케이션이 사용자의 계정에 액세스할 수 있도록 권한을 부여하는 프로토콜입니다. OAuth는 사용자의 비밀번호를 제공하지 않고도 외부 애플리케이션이 사용자의 계정에 접근할 수 있게 해줍니다. 주요 개념 및 작동 방식은 다음과 같습니다:
-
클라이언트: 사용자가 자원에 액세스할 수 있도록 권한을 요청하는 응용 프로그램 또는 서비스입니다. 예를 들어, 웹 사이트, 모바일 앱 등이 클라이언트가 될 수 있습니다.
-
자원 소유자: 자원에 대한 액세스를 허용하는 사용자 또는 엔터티입니다. 예를 들어, 사용자의 소셜 미디어 계정을 소유하는 사용자가 될 수 있습니다.
-
자원 서버: 사용자의 리소스가 저장된 서버입니다. 예를 들어, 사용자의 프로필, 사진, 문서 등이 저장될 수 있습니다.
-
인증 서버: OAuth 프로토콜을 사용하여 사용자의 인증을 처리하는 서버입니다. 사용자의 신원을 확인하고 클라이언트에게 액세스 토큰을 발급합니다.
OAuth 프로세스는 다음과 같습니다:
- 클라이언트는 인증 서버에게 자원에 대한 액세스를 요청합니다.
- 사용자는 자원에 대한 액세스 권한을 허용하고, 인증 서버에게 인증합니다.
- 인증 서버는 클라이언트에게 액세스 토큰을 발급합니다.
- 클라이언트는 액세스 토큰을 사용하여 자원 서버에 자원을 요청합니다.
- 자원 서버는 클라이언트에게 요청한 자원을 제공합니다.
OAuth는 보안 및 사용자 편의성을 고려하여 개발되었으며, 다양한 인증 및 권한 부여 시나리오에 유연하게 대응할 수 있습니다. 이를 통해 사용자는 여러 서비스 및 애플리케이션 간에 신뢰할 수 있는 인증 및 자원 공유를 가능하게 합니다.