spring-project

REST API 인증 방법

가는가래 2019. 3. 1. 12:54

REST API 인증 방법



인증(Authentication) 과 인가(Authorization)란?


1. 인증(Authentication)
    - 사용자인지 아닌지를 확인. 주로 아이디/패스워드 인증이 많이 사용되나 생체인식 등의 인증도 사용.

2. 인가(Authorization)
    - 사용자가 권한이 있는지 없는지 확인하여 해당 행위를 제한하거나 가능하게 하게 함.



REST API 인증 방법.


1. HTTP Basic Authentication

- 사용자 이름과 암호 Base 64 인코딩을 하여 서버로 전송.

- 요청 할 때 마다 사용자 이름과 암호를 전송해야 한다.

- Man-in-the-middle attack.에 취약하다.


2. Cookies and Session

- 세션은 키를 사용자 아이디에 매핑합니다.

- 세션이 존재하는 경우 키가 유효한 것으로 판단합니다.

- 매 요청마다 쿠키에서 키를 보내 인증을 하여 세션이 유효한지 판단한다.

- REST API 의 기본 원칙인 Stateless에 위배 된다.


3. OAuth 2.0 (Token in HTTP Header)

- OAuth 는 REST API 보안의 표준이 되고 있다. 


4. API Keys

- 로그인 후 API키를 받아서 전달받아서 매 요청시마다 API키를 전달하는 방법.



어떤 인증 방법을 선택 해야 할까?


 여러가지 인증방법이 있지만 상황에 맞는 인증 방법을 사용하면 된다. 

OAuth 방법이 제일 권장할만하지만, 내부 시스템이라면 간단한 HTTP basic 인증도 나쁘지 않은 선택이다.