320x100
320x100

API 보안기법

- 인증

 : API 서비스를 사용하고자 하는 대상자가 서비스 사용이 가능한지 여부를 확인하는 것

  = 웹 서비스의 로그인과 같은 기능

 

 

- 인가

 : API 서비스가 제공하는 기능별로 사용자의 권한을 관리하는 것

  = 유료사용자와 무료사용자의 차이를 두는 것과 같은 기능

 

 

- 인증기법 종류

 : API Key

 : API Token

 : OAuth2.0

 : HTTP Basic Auth

 : JWT (JSON Web Token)

 : OpenID

 : SAML

 : Digest Access Authentification

 : 클라이언트 인증 추가

 : IP White List를 이용한 터널링

 : Bi-directional Certification (Mutual SSL)

 

 

- 인가기법 종류

 : 클라이언트에서 인가 처리

 : API Gateway

 : API서버

 

 

- 네트워크 레벨 암호화 (Network Level Encryption)

 : 네트워크 프로토콜 단에서 사용자와 API 서비스 제공자 간에 주고받는 데이터를 암호화

 : 일반적으로 HTTPS 기반의 프로토콜이 이에 해당

 

 

- 메시지 보호

 : 사용자와 API 서비스 제공자간에 주고받는 메시지 자체를 보호하는 기능

 : 무결성 보장 (HMAC)

 : 암호화 (대칭키, 공개키)

 

 

 

 

 

 

API 인증 기술

API Key 

- 서비스 제공자가 발급해준 KEY를 통해 인증하는 방식

 

 

- 특징

 : KEY는 사용자 별로 임의의 문자열로 구성

 : 사용자는 API KEY 정보를 메시지 안에 포함하여 서비스 호출

 : 한번 노출시 전체 API의 보안이 뚫리는 문제 발생 위험

 

 

 

 

API Token

- Token을 활용하여 API 인증을 하는 방식

 : ID, PW를 입력하면 API 서비스 제공자는 유효한 토큰을 사용자에게 발행하고 토큰을 통해 사용자를 인증하는 방식

 

 

- 특징

 : key와 달리 토큰이 노출되어도 ID와 PW가 보호될 수 있어 보안성이 더 높음

 

 

 

 

OpenID Connect (OAuth2.0)

- 특정 서비스에 대한 회원 가입 필요없이 기존에 사용하던 서비스들의 계정으로 인증하는 방식

 : 인증은 OAuth2.0 프로토콜을 이용 

※ OAuth2.0

  = 웹 또는 앱에서 타사의 API를 사용하고자 할때 권한을 획득하기 위한 프로토콜 방식

 

 

- 특징

 :  facebook, google, naver와 같은 기존에 사용하던 서비스들의 계정으로 로그인을 진행

 : 보다 안전하고 편리하게 검증된 API를 사용할 수 있으며 사용자의 편의성도 증대

 

 

 

 

HTTP Basic Auth

- ID, PW 정보를 HTTP 헤더에 Base64 인코딩 형태로 넣어서 인증에 사용하는 방법

 

 

- 특징

 : 더 높은 보안 수준을 위해 HTTPS 프로토콜 필요

 

 

 

 

JWT (JSON Web Token)

- 전자서명된 URL-safe JSON을 이용한 인증 방식

 : 전자서명으로 JSON의 변조 체크

 

 

- 특징

 : JWT는 속성정보(Claim)를 JSON 데이터 구조로 표현한 토큰 (RFC7519 표준)

 

 : 클라이언트에서 http 리퀘스트 헤더에 JSON Token을 첨부한 후 서버로 전송,

  서버에서는 별도의 인증과정 없이 헤더에 포함된 JWT 정보를 통해 인증

 

 : JSON 데이터는 URL-safe하면서 URL에 포함가능한 문자만으로 생성

 

 : HMAC알고리즘을 이용하여 비밀키 또는 RSA를 이용한 개인키/비밀키로 서명 가능 

 

※ HMAC 알고리즘

  => 암호화를 위한 해싱 알고리즘

 

 

 

 

SSO (Single Sign On)

- 한 번의 로그인으로 여러 개의 다른 도메인을 이용하기 위한 방법 

 : SAML을 이용

 

※ SAML (Security Asserting Markup Language)

  = 보안 인증에 관한 정보를 기술하는 미크업 언어 

  = 인증 / 인가 정보를 담은 XML파일

 

 

 

 

Digest Access Authentification

- 서버에서 생성한 난수를 통해 ID, PW 정보를 Hash화 하는 방법

 : HTTP Basic Auth의 단점을 보강하기 위해 나온 인증 프로토콜

 

- 특징

 : 서버에서 생성한 난수는 클라이언트와 서버가 모두 알고있는 값이며 이 난수를 통해 클라이언트에서 

   Hash화 하여 서버로 전송하기 때문에 ID와 PW의 노출 위험 감소

   (Hash 알고리즘 [MD5, SRP6a 등]에 따라 보안수준 차이 발생 가능)

 : 서버에서의 별도의 난수 관리 필요

 

 

 

 

클라이언트 인증 추가

- ID, PW 뿐만 아니라 Client ID와 Client Secret 정보를 추가로 입력 받아 API Token을 발급하는 방법

 

- 특징

 : API 서비스를 사용할 앱을 등록하여 사용

 ex) 트위터, 페이스북 개발자 사이트

   => 개발할 앱 또는 웹에 대한 정보를 입력하고 인증하는 절차

 

 

 

 

IP White List를 이용한 터널링

- API 서비스를 제공하고자 하는 아이피 정보를 별도로 관리함으로써 

  해당 아이피에서 온 요청만 처리하는 방식

 

- 특징

 : 특정 서버간의 통신에서 많이 사용되며, 서버 정보가 많이 변경되지 않는 경우에 사용

 

 

 

Bi-directional Certification (Mutual SSL)

- 가장 높은 수준의 인증방식이며, 서버 뿐만 아니라 클라이언트에도 인증서를 놓고 사용하는 방식

 

 

 

 

 

 

 

Refference

 

OAuth2.0

OAuth2.0 안녕하세요. 오늘은 우리가 여러 웹서비스들을 이용할 때 자주 사용되는 요소 중 하나인 OAuth2.0에 대해 살펴보는 시간을 갖도록 하겠습니다. OAuth2.0이란 각종 웹, 모바일 어플리케이션에

baked-corn.tistory.com

 

JWT (JSON Web Token) 이해하기와 활용 방안 - Opennaru, Inc.

JWT 는 JSON Web Token의 약자로 전자 서명 된 URL-safe (URL로 이용할 수있는 문자 만 구성된)의 JSON입니다.JWT는 속성 정보 (Claim)를 JSON 데이터 구조로 표현한 토큰으로 RFC7519 표준 입니다.

www.opennaru.com

 

편의성을 높인 ID 인증 관리: OIDC(OpenID Connect)가 주목 받는 이유

편의성을 높인 ID 인증 관리: OIDC(OpenID Connect)가 주목 받는 이유

www.samsungsds.com

 

[API] REST API 보안

1. 인증 - API 서비스를 사용하고자 하는 대상자가 서비스 사용이 가능한지 여부를 확인하는 것을 의미한다. (일반적인 웹서비스에 로그인과 동일한 기능이다.) 1-1. API Key 가장 기초적인 방법으로

digitalbourgeois.tistory.com

300x250
728x90