API Test/POSTMAN2020. 8. 30. 08:00

Authorization(권한부여/인가)란 무엇입니까?

권한 부여의 의미는 서버 보안 리소스  액세스 할 수 있는가? 라는 질문으로 볼 수 있습니다 . 대답이 '예'인 경우 기술적 인 측면 에서 리소스에 액세스 할 수있는 권한 이 있다고 말할 수 있습니다 . 대답이 아니요 이면 리소스에 액세스 할 수있는 권한 이 없다고 말할 수 있습니다 . 예를 들어 휴대 전화에 본인과 자매의 지문을 추가했다고 가정 해 보겠습니다. 귀하와 귀하의 자매는 동일한 휴대 전화를 열 수 있습니다. 즉, 귀하와 귀하의 자매 만이 휴대 전화를 열고 데이터를 볼 수있는 권한이 있습니다 . 마찬가지로 많은 API 가있을 수 있지만 회사 또는 프로젝트에서. 모든 사람이 모든 API에 액세스 할 필요는 없습니다. 권한이 있는 사람 만 보안 API에 액세스 할 수 있습니다.

 

인증 대 인증

권한 부여/인가(Authorization)  인증(Authentication)은 밀접하게 관련된 두 가지 용어입니다. 이 두 용어는 처음에는 혼란스러울 수 있습니다. 자 이 두 용어에 대한 혼동을 해소합니다.

인증은 시스템 및 시스템이 사용자의 자격 증명을 확인하는 데 자격 증명을 제공하는 프로세스입니다. 이러한 자격 증명은 시스템에 귀하가 누구인지 알려줍니다. 이를 통해 시스템은 사용자의 신원을 확인하고 확인할 수 있습니다. 여기서 시스템은 무엇이든 될 수 있으며 컴퓨터, 전화, 은행 또는 물리적 사무실 건물 일 수 있습니다 .

인증은 인증이 완료되면 누군가가 무언가에 액세스하는 것을 허용하거나 거부하는 프로세스입니다. 따라서 일반 용어로 인증은 당신이 누구인지 알려주고 인증은 당신이 할 수있는 일을 알려줍니다.

사람이 key(ID) / password 를 사용하여 서버에 액세스하면 서버는 해당 사람이 디렉토리에서 사용 가능하고 동일한 key / password 와 연결되어 있는지 확인합니다 . 리소스에 대한 액세스 권한이있는 경우 리소스 ( Authorized(승인됨))에 대한 액세스 권한이 부여 됩니다.

서버가 권한이없는 사람을 거부하는 방법을 설명하기 위해 다음과 같은 간단한 예를 살펴 보겠습니다.

 

Postman을 사용한 인증

승인 확인(Checking Authorization)

https://postman-echo.com/basic-auth 엔드 포인트를 사용합니다.

1. GET 요청을 만들고 끝점을 https://postman-echo.com/basic-auth 로 입력합니다.

[Send]보내기를 누르고 응답을보십시오.

참고 :  상태 코드는 무단 액세스에 해당하는 401 이며 응답 메시지는 Unauthorized 입니다.

서버의 상태 코드와 응답은 액세스하려는 API 에 액세스 할 권한이 없음을 나타냅니다.

 

승인 필요(Need for Authorization)

마지막 섹션에서는 리소스 소유자가 회사의 모든 사람에게 리소스에 대한 액세스를 허용하지 않는다는 점에 대해 논의했습니다. 보안 위반 가능성이 있기 때문입니다. 인턴이 내 데이터베이스 API에 액세스하도록 허용하면 실수로 데이터를 변경할 수 있으며 해당 데이터는 회사에 비용이 될 수있는 영원히 손실 될 수 있습니다 . 동일한 이유는 여러 가지가 있습니다. 돈을 위해 데이터를 변경하거나 다른 회사에 데이터를 유출 할 수 있습니다. 권한 부여는 액세스를 결정하고 보안을 강화하는 데 매우 중요한 역할을합니다. 사용 가능한 다양한 인증 유형을 살펴 보겠습니다.

 

기본 액세스 인증 / HTTP 기본 인증

(Basic Access Authentication / HTTP Basic Authentication)

기본 액세스 인증은 가장 간단하고 가능한 인증의 기본 유형입니다. 모든 사람의 인증을 확인하기 위해 사용자 이름  비밀번호 만 필요합니다 ( 이것이 기본 액세스 인증 이라고하는 이유입니다 ). 사용자 이름과 암호는 Authorization 헤더의 헤더 값으로 전송됩니다 . 기본 인증을 사용하는 동안  사용자 이름과 비밀번호를 입력하기 전에 Basic 이라는 단어를 추가 합니다. 이러한 사용자 이름 및 비밀번호 값은 Base64로 인코딩해야합니다. 그렇지 않으면 서버에서 인식 할 수 없습니다 . 위에서 사용한 것과 동일한 API에 액세스 할 수 있는지 여부를 확인하기 위해 다음 단계를 따릅니다.

 

자격 증명을 사용하여 인증 확인

1. GET 요청에 엔드 포인트 https://postman-echo.com/basic-auth를 입력 합니다.

2. Headers로 이동

 

3. Header에 다음 키 값 쌍을 입력하십시오.

Authorization   :    Basic postman:password

 

참고 : 우리는 사용자 이름을 postman로 사용 하고 비밀번호를 password 로 사용 합니다.

4. Send를 누르고 응답 상자와 상태 코드를 확인합니다.

여전히 400  , Bad Request로 표시 됩니다. 이유를 추측 할 수 있습니까? 기본 액세스 인증에는 사용자 이름과 암호를 Base64로 인코딩해야하지만 여기서는 사용자 이름과 암호를 일반 텍스트로 보냈습니다. 결과적으로 서버는 400, 잘못된 요청 상태 코드를 반환했습니다. 계속 진행하기 전에 Base64 인코딩이 무엇인지 이해하는 것이 좋습니다 .

 

Base64 인코딩이란 무엇입니까?

데이터가 네트워크를 통해 직접 전송되는 것을 원하지 않기 때문에 인증에 인코딩이 사용됩니다. 그 이유는 여러 가지가 있습니다. 네트워크 스캐너는 요청을 읽고 인코딩없이 전송 된 사용자 이름과 암호를 검색 할 수 있습니다. 또한 직접 전송되는 비트와 바이트는 모뎀이나 네트워크 체인의 다른 장비에 의해 내장 명령 비트로 간주 될 수 있습니다. 예를 들어 0101101010 의 내장 명령이있는 경우 모뎀으로 재설정하면 전송하는 동안 001101010 0101101010 11020 의 데이터 시퀀스를 얻을 수 있습니다. 여기서 모뎀은이를 재설정 명령으로 해석하여 자체적으로 재설정합니다 . 이러한 문제를 방지하려면 데이터를 인코딩하는 것이 좋습니다.

특히 base64를 사용하는 이유는 데이터를 텍스트 형식으로 전송하고 HTML 형식 데이터와 같은 더 쉬운 형식으로 전송하기 때문입니다. 특히 우리가 사용하는 모든 인코딩 언어에서 동일한 64자를 사용할 수 있기 때문에 Base64를 사용합니다. 더 높은 기본 인코딩 방법을 사용할 수도 있지만 변환 및 전송이 매우 어렵기 때문에 불필요하게 시간이 낭비됩니다.

Authorization 헤더 에서 Base64로 인코딩 된 문자열을 보내는 원래 문제로 돌아갑니다 . Base64로 인코딩 된 문자열 을 만드는 두 가지 방법이 있습니다 .

 

  • third party 웹사이트를 통해서
  • Postman을 통해서

 

 

 

두 가지 옵션을 하나씩 살펴 보겠습니다. 지금은 타사 웹 사이트에서 디코딩하여 API에 액세스하는 단계를 따르십시오.

 

타사 웹 사이트를 통한 인코딩으로 인증

1. https://www.base64encode.org/  이동합니다.

참고 : 동일한 목적으로 사용할 수있는 수천 개의 웹 사이트가 있습니다. 우리와 같은 값으로 인코딩했는지 확인하기 만하면 누구나 사용할 수 있습니다. 또한 Microsoft Edge 를 브라우저로 사용하고 있지만 차이는 없습니다.

2. 상자에 다음 값을 붙여 넣습니다.

postman:password

 

3. Encode를 누릅니다.

4. 인코딩 된 텍스트를 복사합니다.

참고 : 두 텍스트 또는 기호 사이에 공백을 사용하지 마십시오.

postman : password 다른 값으로 인코딩됩니다 

postman: password 다른 값으로 인코딩됩니다

말할 것도없이 둘 다 잘못된 것으로 간주됩니다.

 

postman:password  사용하십시오 .

 

5. postman 앱으로 이동하여 postman:password 대신 인코딩 된 값을 붙여 넣습니다.

6. send를 누르고 응답 상자의 값과 상태 코드를 확인합니다.

200 OK, 인증 됨은 올바른 자격 증명을 제공했으며 이제 데이터에 액세스 할 권한이 있음을 의미합니다.

 

Postman을 통한 인코딩으로 인증

타사 웹 사이트로 이동하는 대신 Postman을 사용하여 인코딩을 시도합니다.

1. 이전에 입력 한 키 값 쌍을 지워 이제 값이 없도록합니다.

2. authorization (인증) 탭으로 이동

3. Type 드롭 다운 에서 Basic Auth  선택합니다.

4. 사용자 이름을 우편 postman   입력 하고 비밀번호를 password  입력합니다.

5. Preview Request를 누릅니다.

6. Header 로 이동하여 Postman이 사용자 이름과 비밀번호를 변환 했는지 확인합니다.

7. [Send]보내기를 누르세요. 우리는 인증되었습니다.

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터