API Key
API Key는 다양한 서비스 간의 통신을 보장하고 보안을 유지하기 위한 인증 수단 중 하나이다. API Key는 사용자가 해당 서비스를 사용할 권한을 부여받을 수 있는 키로, 사용자 식별 및 권한 관리에 사용된다.
동작 방식
- 사용자는 서비스에서 API Key를 발급받는다.
- API를 호출할 때, API Key를 함께 요청에 포함시켜 서버로 전송한다.
- 서버는 API Key를 검증하여 사용자 식별 및 권한을 확인한 후 응답한다.
문제점
- 키 유출 시 보안상의 문제가 발생할 수 있다. 따라서, 주기적인 업데이트와 관리가 필요하며 이때 한 쪽만 업데이트 되는 예외상황이 발생할 수 있다. 키 하나로 암복호화하므로 보안 문제가 발생하기 쉽다.
OAuth2
API Key의 한계를 극복하고 사용자 경험을 개선하기 위해 등장한 인증 방식이다. OAuth2는 주로 소셜 미디어 플랫폼의 로그인 기능에서 많이 사용된다.
동작방식
- 사용자가 애플리케이션의 특정 기능을 사용하기 위한 요청을 보낸다.
- 애플리케이션은 해당 사용자의 로그인 상태를 확인한다.
- 애플리케이션은 사용자를 인증 서버로 리디렉션시킨다.
- 인증 서버는 사용자의 회원 여부와 로그인 상태를 확인한다.
- 인증이 완료되면 사용자가 요청한 기능에 대해 권한이 있는지 확인한다. (= Grant)
- 사용자의 권한이 확인되지 않을 경우 사용자에게 다시 권한요청을 보낸다.
- 사용자가 권한요청을 승인하면 해당 인증 정보에 대한 권한을 부여하고 이때, 인증 서버는 인가 코드를 생성하여 애플리케이션에 전달한다. (인가 코드는 보안을 위해 유효기간이 짧으며, 인증 서버에 저장된다.)
- 애플리케이션은 인가 코드를 사용하여 인증 서버에 Access Token을 요청하고, 이를 통해 리소스 서버에 접근한다.
- Access Token을 이용하여 애플리케이션은 사용자의 데이터를 받아올 수 있다. 이때, 리소스 서버는 Access Token의 유효성을 검증하고, 데이터를 전달한다.
문제점
- 통신에 사용하는 토큰이 무의미한 문자열을 가지고 있고 정해진 규칙이 없기 때문에 증명확인이 필요하다. 따라서 유효성을 확인해야하는 공증 여부 문제가 있으며, 유효기간 문제도 있다.
JWT(JSON Web Token)
JWT는 인증 정보를 자체적으로 포함한 토큰을 사용하여 인증하는 방식이다.
동작방식
- 사용자는 서버에 로그인을 요청한다.
- 서버는 사용자 정보를 확인하고, 로그인이 성공하면 JWT를 생성하여 사용자에게 반환한다.
- 이후 사용자는 요청 시 JWT를 헤더에 실어 서버로 보낸다.
- 서버는 JWT의 유효성을 검증하고, 이를 기반으로 사용자 인증과 권한 부여를 수행한다.
문제점
- 토큰 자체가 인증 정보를 가지고 있기 때문에 민감한 정보는 인증서버에 다시 접속하는 과정이 필요하다.
'Computer Science > Web' 카테고리의 다른 글
[Web] CSR & SSR (0) | 2023.09.07 |
---|---|
[Web] Logging Level (0) | 2023.08.31 |
[Web] JWT (JSON Web Token) (0) | 2023.08.31 |
[Web] OAuth (0) | 2023.08.10 |
[Web] Web Server와 WAS의 차이 (0) | 2023.08.10 |