Basic 인증 생성기
아이디와 비밀번호로 HTTP Basic 인증 헤더 값을 생성합니다.
「Authorization: Basic …」, 「Basic …」, Base64 값만 — 어느 형태로 넣어도 인식합니다.
⚠ Basic 인증은 암호화가 아닙니다. 「아이디:비밀번호」를 Base64로 인코딩할 뿐이라 누구나 즉시 원문으로 되돌릴 수 있습니다(오른쪽 「헤더 디코딩」 탭이 그 증거입니다). 반드시 HTTPS 위에서만 사용하고, 헤더 값을 URL 쿼리·로그·깃 저장소에 남기지 마세요. 공개 API라면 Basic 대신 토큰 기반 인증(Bearer, OAuth)을 권장합니다.
인코딩·디코딩은 모두 브라우저 안에서만 이뤄집니다. 입력한 아이디·비밀번호는 서버로 전송되지 않고, 자격증명이므로 브라우저에도 저장하지 않습니다 — 새로고침하면 사라집니다.
Basic 인증 생성기란?
API 테스트나 개발 시 필요한 HTTP Basic 인증 헤더를 빠르고 안전하게 생성합니다. Postman 같은 도구를 열기 번거롭거나, curl 명령어에 쓸 헤더 값만 간단히 필요할 때 유용합니다. 아이디와 비밀번호를 입력하면, `Authorization: Basic ...` 형태의 헤더 값이 즉시 만들어집니다. 전체 헤더 문자열, 헤더 값, Base64 부분만 따로 복사할 수 있으며, 바로 실행 가능한 curl 예시까지 제공합니다. 반대로 기존 헤더를 디코딩해 아이디와 비밀번호를 확인하는 기능도 있습니다. 입력하신 모든 정보는 서버로 전송되지 않고 브라우저 안에서만 처리되므로, 민감한 인증 정보를 안심하고 다룰 수 있습니다.
사용 방법
- 「🔒 헤더 생성」 모드에서 아이디와 비밀번호를 입력합니다.
- 입력과 동시에 `Authorization` 헤더 전체, 헤더 값, Base64 값, `curl` 명령 예시가 실시간으로 생성됩니다.
- 결과 옆의 「복사」 버튼을 눌러 필요한 값을 API 클라이언트나 코드에 붙여넣습니다.
- 「🔍 헤더 디코딩」 모드로 전환하면, 기존 Basic 인증 헤더를 붙여넣어 아이디와 비밀번호를 다시 확인할 수 있습니다.
- 「예시 넣기」 버튼을 누르면 테스트용 값이 자동으로 채워져 도구의 작동 방식을 바로 파악할 수 있습니다.
Basic 인증 생성기 사용 가이드
실제 작업에서 이 도구를 어떻게 쓰는지, 무엇을 조심해야 하는지 정리했습니다.
HTTPS가 아니면 그냥 평문입니다
왼쪽에서 만든 헤더를 "헤더 디코딩" 탭에 붙여넣어 보세요. 아이디와 비밀번호가 그대로 되살아납니다. 키도 암호도 필요 없습니다. Base64는 암호화가 아니라 바이트를 문자로 옮기는 표기법일 뿐이기 때문입니다.
이 말은 HTTP로 요청을 보내면 중간의 누구나 — 공용 와이파이의 다른 손님, 사내 프록시, 통신 경로의 장비 — 헤더를 그대로 읽어 계정을 가져간다는 뜻입니다. Basic 인증에 안전한 사용법이 딱 하나 있다면 "반드시 HTTPS 위에서"입니다. 이 도구도 요청 URL이 https:// 로 시작하지 않으면 경고를 띄웁니다.
- URL에 https://user:pass@host 형태로 넣지 마세요. 셸 히스토리와 서버 로그에 계정이 그대로 남습니다.
- 자격증명을 쿼리 파라미터로 옮기지 마세요. 쿼리는 접근 로그에 남고 리퍼러로 새어 나갑니다.
- 깃 저장소·이슈·위키에 헤더 값을 붙여넣지 마세요. 디코딩 한 번이면 비밀번호입니다.
언제 써도 되고, 언제 쓰면 안 되나
Basic 인증은 낡았지만 여전히 쓸모가 있습니다. 판단 기준은 "이게 뚫렸을 때 무슨 일이 일어나는가"입니다.
Basic 인증의 결정적 한계는 끄는 방법이 비밀번호 변경밖에 없다는 점입니다. 토큰이라면 유출된 것 하나만 폐기하면 되지만, Basic은 비밀번호를 바꾸는 순간 그 계정을 쓰던 모두가 함께 끊깁니다. 권한을 나눌 수도, 만료를 둘 수도 없습니다.
| 상황 | 판단 | 이유 |
|---|---|---|
| 스테이징·개발 서버 전체 잠그기 | 적합 | 설정 두 줄로 끝. 검색 노출과 외부 접근을 함께 막습니다 |
| 관리자 페이지 앞단 이중 잠금 | 적합 | 앱 로그인과 별개로 한 겹 더. HTTPS와 IP 제한을 함께 |
| 사내 모니터링 대시보드 | 조건부 | HTTPS 필수. 계정을 팀이 공유하므로 퇴사자 관리가 어렵습니다 |
| 서버 간 내부 API 호출 | 조건부 | 가능하지만 키 교체가 번거롭습니다. 토큰 방식이 낫습니다 |
| 일반 사용자용 공개 API | 부적합 | 개별 폐기·권한 분리·만료가 안 됩니다. Bearer·OAuth를 쓰세요 |
| 모바일 앱에 계정 내장 | 부적합 | 앱은 언제든 뜯어볼 수 있습니다. 내장된 순간 공개된 값입니다 |
nginx에 실제로 거는 법과 이 도구의 한계
헷갈리기 쉬운 부분입니다. 이 도구가 만드는 것은 클라이언트가 보내는 Authorization 헤더 값입니다. 서버에 두는 비밀번호 파일(.htpasswd)이 아닙니다. 그 파일은 비밀번호를 Base64가 아니라 해시로 저장하므로 이 도구로는 만들 수 없고 htpasswd 명령이 필요합니다.
- 헬스체크·웹훅 수신 경로까지 함께 잠그면 외부 서비스 연동이 조용히 끊깁니다. 예외 location을 두세요.
- 스테이징을 Basic으로 잠갔다면 robots.txt나 noindex는 사실상 불필요합니다 — 크롤러도 401을 받습니다.
- 401 응답에 WWW-Authenticate 헤더가 있어야 브라우저가 로그인 팝업을 띄웁니다. API에서 이 팝업이 뜨는 게 싫다면 403을 쓰거나 그 헤더를 빼세요.
# 1) 서버: 비밀번호 파일 생성 (bcrypt)
sudo apt install apache2-utils
sudo htpasswd -B -c /etc/nginx/.htpasswd admin
sudo chmod 640 /etc/nginx/.htpasswd
# 2) nginx 설정
location /admin/ {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:3000;
# 뒷단 앱이 이 헤더를 자기 인증으로 오해하지 않도록 비운다
proxy_set_header Authorization "";
}
# 3) 클라이언트: 이 도구가 만든 헤더로 확인
curl -I -H 'Authorization: Basic YWRtaW46...' https://example.com/admin/
아이디에 콜론, 비밀번호에 한글 — 조용히 깨지는 지점
자격증명은 "아이디:비밀번호"를 이어붙여 인코딩합니다. 구분자가 첫 번째 콜론이기 때문에 아이디에 콜론이 들어가면 서버는 그 앞까지만 아이디로 읽고 나머지를 통째로 비밀번호로 해석합니다. 규격 위반이고, 이 도구는 아이디에 콜론이 있으면 경고합니다. 반대로 비밀번호에는 콜론이 있어도 됩니다 — 디코딩 탭도 첫 콜론에서만 나눕니다.
한글 비밀번호는 더 미묘합니다. 이 도구는 UTF-8로 인코딩하지만, 브라우저 기본 팝업이나 옛 서버 구현 중에는 Latin-1로 처리하는 것이 남아 있어 양쪽 해석이 엇갈리면 "비밀번호가 분명히 맞는데 로그인이 안 되는" 상황이 됩니다. 원인 찾기 가장 어려운 부류이니 Basic 인증 계정은 ASCII 문자로만 만드세요.
curl 예시 두 줄의 차이
결과 아래 curl 예시는 두 가지를 함께 보여줍니다. -H 로 헤더를 직접 넣는 방식과, -u 로 curl에게 인코딩을 맡기는 방식입니다. 결과는 같지만 남는 흔적이 다릅니다.
-u 는 편하지만 비밀번호가 셸 히스토리에 남고, 공유 서버라면 실행 중 ps 명령으로 다른 사용자에게 보일 수 있습니다. 자동화 스크립트에서는 값을 환경변수나 .netrc 에 두고 참조하는 편이 안전합니다.
# 히스토리에 안 남기기 (많은 셸에서 앞에 공백을 두면 기록되지 않음)
curl -u 'admin:s3cr3t' https://example.com/admin/
# 환경변수 사용
export API_CRED="admin:s3cr3t"
curl -u "$API_CRED" https://api.example.com/v1/orders
# ~/.netrc (권한 600 필수)
# machine api.example.com login admin password s3cr3t
curl --netrc https://api.example.com/v1/orders
자주 묻는 질문
Basic 인증은 안전한가요?
아니요, 안전하지 않습니다. Base64는 암호화가 아니라 누구나 원문을 복원할 수 있는 인코딩 방식입니다. 따라서 통신 전체를 암호화하는 HTTPS 환경에서만 사용해야 안전이 보장됩니다. HTTP 환경에서 사용하면 아이디와 비밀번호가 그대로 노출될 수 있습니다.
입력한 아이디와 비밀번호는 서버에 저장되나요?
아닙니다. 이 도구의 모든 계산은 사용자의 웹 브라우저 안에서만 이루어집니다. 입력하신 아이디, 비밀번호 등 어떤 정보도 툴즈25시 서버로 전송되거나 저장되지 않습니다. 민감한 정보이므로 페이지를 새로고침하면 입력 내용은 모두 사라집니다.
curl 예시는 어떻게 사용하나요?
생성된 `curl` 명령어는 터미널에서 API 요청을 테스트할 때 바로 사용할 수 있습니다. `-H` 옵션은 완성된 헤더를 직접 전달하는 방식이고, `-u` 옵션은 `아이디:비밀번호`를 전달하면 `curl`이 대신 인코딩해주는 방식입니다. 둘 중 편한 방법을 복사해 사용하세요.
한글이나 특수문자를 사용해도 되나요?
네, 가능합니다. 이 도구는 최신 표준(RFC 7617)에 따라 한글을 포함한 모든 문자를 UTF-8 형식으로 올바르게 인코딩합니다. 다만, API 요청을 받는 서버 역시 자격증명을 UTF-8로 해석하도록 설정되어 있어야 정상적으로 인증됩니다.