728x90
반응형
CURL 명령을 이용하여 Basic 인증을 수행한 HTTP 요청 처리에 대하여 알아 보겠습니다.
Basic 인증은 "HTTP authentication":https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication 문서에 설명이 잘 되어 있는데, 서버에서 기본적으로 인증 정보 없이 요청을 받은 경우에 "401 Unauthorized" 오류 코드가 반환됩니다.
출처 : https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication
정상적으로 요청을 수행하려면 "Authorization" 헤더가 필요한데, 여기에 로그인 아이디 및 비밀정보를 토큰화하여 전달하게 됩니다. 토큰화하는 방법은 "<아이디>:<비밀번호>" 문자열을 단순하게 base64로 인코딩한 결과를 전달해 주면 됩니다. 인증이 필요한 요청에는 매번 "Authorization" 헤더를 포함하여 전달해 줘야 하는데, 그런 이유로 보안에 매우 취약합니다.
"CURL" 명령으로 Basic 인증을 처리할 때는 "-u" 옵션으로 다음과 같이 이용하면 됩니다.
$ curl -v http://authorized.com/target -u "login:password"
> GET /target HTTP/1.1
> Host: authorized.com
> Authorization: Basic bG9naW46cGFzc3dvcmQ=
> User-Agent: curl/8.1.2
> Accept: */*
>
< HTTP/1.1 307 Temporary Redirect
< Server: openresty
< Date: Thu, 30 Nov 2023 05:36:16 GMT
< Content-Type: text/html
< Content-Length: 168
< Connection: keep-alive
< Location: http://authorized.com/
그러면 자동으로 "Authorization" 헤더를 만들어서 서버에 요청하게 됩니다.
아니면 아래와 같이 "-u" 옵션 대신 "-H" 옵션으로 직접 인증 정보를 만들어서 보낼 수도 있습니다.
$ curl -v http://authorized.com/target -H "Authorization: Basic bG9naW46cGFzc3dvcmQ="
> GET /target HTTP/1.1
> Host: authorized.com
> User-Agent: curl/8.1.2
> Accept: */*
> Authorization: Basic bG9naW46cGFzc3dvcmQ=
>
< HTTP/1.1 307 Temporary Redirect
< Server: openresty
< Date: Thu, 30 Nov 2023 05:36:43 GMT
< Content-Type: text/html
< Content-Length: 168
< Connection: keep-alive
< Location: http://authorized.com/
아무래도 첫 번째 "-u" 옵션으로 요청 처리를 하는 것이 보다 쉬워 보이긴 합니다. ^^
참고자료
- "HTTP authentication":https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication
- "Sending Curl Request with Basic Authentication Credentials":https://reqbin.com/req/c-haxm0xgr/curl-basic-auth-example
'Linux,Unix,BSD' 카테고리의 다른 글
HAProxy-2.4.2 설치하기 on CentOS8 (0) | 2021.07.12 |
---|---|
[shell] root 권한으로 pipe 처리하기 (파일에 내용 추가하기) (0) | 2021.05.25 |
ubuntu 20.04에 python 3.10 설치하기 (0) | 2021.05.06 |
[bash] 특정 프로세스 일괄중지(kill) 스크립트 (0) | 2021.05.02 |
Detail: No TXT record found at _acme-challenge.domain (0) | 2021.04.19 |