본문 바로가기
Programming/Etc

서버 <-> 클라이언트 인증을 위한 방법 3가지

by guru_k 2023. 4. 24.
728x90
반응형

클라이언트와 서버 간 검증을 위해 헤더에 특정 키를 함께 전송하여 인증을 할 수 있습니다.

우선 전송하는 데이터의 민감도와 보안 요구 사항을 최우선적으로 고려해야 합니다.

일반적인 방법 중에 아래 3가지 방법이 있습니다.

1. API Key (API 키) - 이 방법은 클라이언트와 서버 간에 API 키를 사용하여 인증하는 방식입니다. 이 키는 서버에 전송되며, 서버는 요청을 처리하기 전에 키가 유효한지 확인합니다. 헤더의 키로 X-API-KEY 또는 Authorization을 사용할 수 있습니다.

예시: X-API-KEY: 1234567890abcdef

2. JWT (JSON Web Token) - 이 방법은 클라이언트와 서버 간에 암호화된 JSON 토큰을 교환하여 인증하는 방식입니다. JWT는 보안 및 데이터 무결성을 위해 서명되며, 기본적으로 인증 및 권한 정보를 포함합니다. 헤더의 키로 Authorization을 사용하며, 토큰 앞에 "Bearer"를 붙입니다. JWT는 클라이언트가 로그인 시점에 서버로 부터 할당 받으며 클라이언트는 서버로 부터 할당 받은 JWT를 매번 Header에 담아서 보내며 서버는 이를 이용하여 유효한 요청인지 확인합니다.

예시: Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

3. HMAC (Hash-based Message Authentication Code) - 클라이언트와 서버가 암호화된 메시지를 생성하고 검증하기 위해 사용하는 방법입니다. 클라이언트는 서버와 공유하는 비밀 키를 사용하여 메시지에 대한 HMAC 서명을 생성하고, 서버는 동일한 비밀 키를 사용하여 메시지를 검증합니다. 헤더의 키로 X-HMAC-SIGNATURE를 사용할 수 있습니다.

예시: X-HMAC-SIGNATURE: a4d930ddf4e5d5c5ab9187e75de22f8d

이러한 방법들을 사용하여 클라이언트 <> 서버간 인증을 구현할 수 있습니다. 하지만 이러한 방법은 100% 유효할 수 없으니 선택할 때도 데이터의 민감도, 성능 및 구현의 복잡성을 잘 고려하여 사용해야 합니다. 필요에 따라 여러 인증 방식을 조합하여 사용 할 수도 있어야 합니다.

 

728x90
반응형

댓글