본문 바로가기
API

API_ Authorization & Authentication

by Testengineer 2024. 1. 1.
반응형


 API에서의 권한부여(Authorization)

권한부여란 우리가 주어진 사용자가 어떤 일을 하도록 허락하는지를 결정하는 것을 의미한다. 예를 들어, 학생들은 자신의 학점만 볼 수 있고 교사인 다른 사용자는 다른 데이터도 볼 수 있을 것이고 데이터의 수정과 입력이 가능할 것이다. 권한부여란 어떤 일을 할 수 있는 허용을 받았는지를 결정하는 것이라고 할 수 있다. API에서 이것은 엔드포인트에서 다른 엔드포인트까지 특정 방식을 사용할 수 있는 권한을 부여받았는지를 결정하는 형식을 취할 수 있다. 예를 들어, 어떤 사용자는 어떤 엔드포인트에는 아예 사용할 수 없는 반면 어떤 경우에는 엔드포인트를 사용하여 데이터를 얻는 것이 허용될 수 있다. 
API 보안에 있어서 인증 및 권한 부여는 매우 중요한 부분이다. API를 사용하기 위해서는 사용자 이름과 비밀번호가 필요하다고 해서 반드시 보안이 잘 되어있다고 하기에는 어렵다. API에서는 API의 다른 관계에서 정보가 드러날 수 있는 작동방식에 대해 주의해야 필요가 있다. 

 

 API에서의 인증(Authentication)


권한부여에서 특정 종류의 사용자가 어떤 일을 하도록 허용되는지에 대한 것을 결정한다면, 인증에서는 사용자가 정말 그 특정 종류의 사용자인지 확인하는 것이다. API에서 인증에는 암호를 입력하거나 사용자임을 증명할 수 있는 키를 제공하는 것이 포함된다. 


 

 


API 서비스에 안전하게 액세스 하려면 클라이언트는 두 단계 프로세스를 거쳐야 한다.

Authorization : 리소스 소유자는 일반적으로 키나 토큰 형식으로 API 서비스에 대한 클라이언트 액세스 권한을 부여한다.
Authentication : 클라이언트는 키 또는 토큰을 API 서비스에 전달하며 API 서비스는 유효성을 확인하고 그에 따라 응답한다.


 



포스트맨에서 API 보안


Authorization과 Authentication은 서로 구분되는 개념이지만 포스트맨에서의 권한은 이 두 개념을 모두 포함한 포괄적인 용어로 설명한다. 
포스트맨에서 Autorization을 사용하기 위해서는 먼저
1) Collections 탭에서 패널을 열고 request를 선택한다.
2) 그리고 Autorization 탭을 선택한다
3) 드롭다운을 클릭하면 여러 타입의 autorization을 확인할 수 있다.



- Inherit auth from parent

API를 쉽게 관리할 수 있게 해주는 강력한 옵션이다. 보통 API 요청에 접근하려면 언제든지 권한 옵션을 지정해야 한다. 총 전체가 아닌 포스트맨에서 폴더나 컬렉션 수준에서 권한을 지정할 때 이 옵션을 사용한다. 예를 들어, 비밀번호나 기타 로그인 정보를 업데이트해야 하는 경우 한 곳에서 이 작업을 수행한다.


- Basic Auth
이 옵션은 API를 사용하기 위해 사용자 이름과 비밀번호를 지정해야 하는 API에서 사용된다. 가장 간단한 형태의 권한이지만 일반적으로 권장되거나 운영체제에서 사용되지는 않는다. Basic Auth는 해킹에 너무 취약해서 운영에는 잘 사용되지 않지만 API 보안이 어떻게 작동되는지를 파악하기에는 좋다.
기본 권한 사용을 확인하기 위해 엔드포인트를 설정 (https://postman-echo.com/basic-auth)
1) 포스트맨에서 postman Echo API용 collection을 만들고 Basic-Auth를 엔드포인트를 사용하여 request에 추가한다.
2) send를 클릭하면 401의 Unauthorized code가 반환된다.


3) Authorization탭을 클릭하고 Basic Auth 옵션을 선택한다.
4) 포스트맨 사용자 이름과 비밀번호를입력한다.


5) send를 클릭하면 이제 200 응답이 나타난다.


haeders 탭을 클릭하면 Authorization헤더가 추가되는데 Basic으로 시작한다. 이후 사용자 이름과 비밀번호를 입력하면 Base64 인코딩을 나타내는데 base64 인코딩은 안전하지 않다. 디코딩하면 바로 사용자 이름과 암호가 다시 가져와지기 때문이다. 대부분의 API는 그래서 Basic Auth보다 더 복잡한 방법을 사용한다.


- Bearer Token
API authorization을 설정하는 가장 일반적인 방법이다. 
예를 들어, 깃헙 예정이 있다면 다음과 같이 확인할 수 있다.
1) Github 계정 로그인
2) 설정에서 개발자 설정으로 이동


3) 개인 엑세스 토큰 옵션을 설정해서 토큰을 생성 


이 페이지에서 토큰의 범위를 선택할 수 있다. 이 토큰을 사용하면 다른 사용자가 자신이 말한 그대로임을 인증할 수 있을 뿐만 아니라 어떤 동작을 사용할 수 있는지 확인할 수 있기 때문에 기본 인증에 더해서 몇 가지 이점이 있다. 

그리고 포스트맨에서 사용할때에는 토큰 타입을 Bearer token으로 변경해 준 다음에 토큰 정보를 붙여 넣어주면 된다.




- API key
API 키는 다양한 방식으로 사용될 수 있다.
포스트맨에서 Authorization탭에서 Type을 드롭다운해보면 API key 타입이 있는데 이때 몇 가지 옵션이 제공된다.
Add to 버튼을 클릭하면 Header에 API key를 추가할지, Query Params에 추가할지를 선택할 수 있다.


API key를 Bearer token으로 사용하는 것을 제외하고 API를 통해 전달하는 일반적인 방법은 Header(Add to : Header)로 전달하는 것이다. 보통 자신의 header로 전달하는 경우가 많다. 이를 위해 사용되는 일반적인 헤더는 x-api-key 헤더이지만 다른 헤더도 사용할 수 있다. 이런 방식으로 key를 전달해야 하는 api가 있다면, key 필드를 x-api-key로 설정하고 value 필드를 설정하여 포스트맨에서 작성할 수 있다. 



- AWS Signature
클라우딩 컴퓨팅에 관해 아마존 웹서비스(AWS)가 널리 사용되고 있다. 수많은 클라우딩 컴퓨팅 시스템과 리소스를 API를 통해 상호작용할 수 있고, 이를 승인해야 한다. 포스트맨은 AWS API를 승인하는데 도움이 되는 AWS 시그니처 승인 옵션을 제공한다. 

 

- OAuth 2.0
우선, OAuth는 허가의 위임이라는 개념이다. 만약 페이스북에서 사용자 데이터 중 일부에 접근해야 하는 게임을 하려고 한다면, 게임은 승인 서버에 필요한 데이터에 대해 접근을 요청한다. OAuth는 워크플로우에서 사용자에게 애플리케이션이 원하는 접근을 허용해야 하는지를 확인하도록 요청할 것이다. 사용자가 접근을 승인하면, authorization 서버는 애플리케이션에게 접근을 요청한 데이터에 대한 접근을 허용하는 토큰을 줄 것이다. authorization 서버는 응용프로그램에 토큰을 주고 자원서버에서 필요한 데이터에 접근할 수 있게 한다. 

 

- No Auth 
인증 유형을 지정하지 않는 경우, 요청에 인증이 필요 없는 경우 사용한다.


- JWT Bearer
포스트맨은 request를 인증하기 위해 JWT Bearer 토큰 생성된 지원한다. 편집기에 payload를 입력하면 JWT 토큰이 생성되어 요청에 추가된다. 


- Digest Auth
오래된 인증 표준으로, 암호화되지 않은 연결로 데이터를 전송하는 경우 사용자 이름과 암호를 보다 안전하게 사용할 수 있다. 일반 텍스트 암호를 전송하는 것보다 더 안전하지만 대부분의 사이트에서는 암호화된 연결을 사용하기 때문에 현재 API 생태계에서는 큰 가치가 없다.


- NTLM Authentication
NTLM은 New Technology LAN Manager의 약자로 윈도우에서 사용자에게 인증을 제공하기 위해 사용하는 보안 프로토콜의 집합이다. API에서 사용해서 사용자가 현재 윈도우 로그인 정보를 기반으로 aPI의 리소스에 접근할 수 있다. 이런 종류의 인증 설정이  있는 API를 사용하는 경우 type에서 해당 인증을 선택한 다음 윈도우 사용자의 이름과 암호를 입력할 수 있다.


- Akamai EdgeGrid
Akamai Technologies는 글로벌 클라우드 서비스 지원회사이다. 다양한 서비스를 제공하고 있으며 많은 서비스가 API를 통해 지원된다. 네트워크내에서 애플리케이션을 인증하는 자신만의 독특한 방법이 있으며 포스트맨에서 사용할 수 있는 인증 도우미가 있다. 


참고사이트 : https://learning.postman.com/docs/sending-requests/authorization/authorization-types/

반응형

'API' 카테고리의 다른 글

포스트맨에서 테스트 스크립트 작성방법  (0) 2024.02.28
포스트맨을 이용한 보안 테스트  (2) 2024.01.31
Open API와 API 명세  (2) 2023.12.08
API_용어와 유형  (0) 2023.10.25
Postman_data값 가져오기  (0) 2022.10.15

댓글