기본접속인증
Basic access authenticationHTTP 트랜잭션의 맥락에서 기본 액세스 인증은 HTTP 사용자 에이전트(예: 웹 브라우저)가 요청할 때 사용자 이름과 암호를 제공하는 방법입니다.기본 HTTP 인증에서 요청은 다음과 같은 형태의 헤더 필드를 포함합니다.Authorization: Basic <credentials>
, 여기서 credentials는 단일 콜론으로 결합된 ID와 비밀번호의 Base64 인코딩입니다.:
.
1993년[1] CERN의 Ari Luotonen에 의해 처음 구현되었으며 1996년 HTTP 1.0 규격에 정의되었습니다.[2]에 명시되어 있습니다. RFC2617을 1999년부터 폐지하는 2015년부터 RFC7617.
특징들
HTTP Basic 인증(BA) 구현은 쿠키, 세션 식별자 또는 로그인 페이지를 필요로 하지 않으므로 웹 리소스에 대한 액세스 제어를 시행하는 가장 간단한 방법이며, HTTP Basic 인증은 HTTP 헤더의 표준 필드를 사용합니다.
보안.
BA 메커니즘은 전송된 자격 증명에 대한 기밀 보호 기능을 제공하지 않습니다.전송 중인 Base64로 인코딩되었을 뿐 암호화되거나 해시되지 않습니다.따라서 기본 인증은 일반적으로 기밀성을 제공하기 위해 HTTPS와 함께 사용됩니다.
각 HTTP 요청의 헤더에 BA 필드를 보내야 하기 때문에 웹 브라우저는 사용자의 사용자 이름과 비밀번호를 끊임없이 묻는 것을 방지하기 위해 적당한 기간 동안 자격 증명을 캐시해야 합니다.캐싱 정책은 브라우저마다 다릅니다.
HTTP는 웹 서버가 클라이언트에게 사용자를 "로그아웃"하도록 지시하는 방법을 제공하지 않습니다.그러나 특정 웹 브라우저에서 캐시된 자격 증명을 지우는 여러 가지 방법이 있습니다.그 중 하나는 의도적으로 잘못된 자격 증명을 사용하여 사용자를 동일한 도메인의 URL로 리디렉션하는 것입니다.그러나 이 동작은 다양한 브라우저와 브라우저 버전 간에 일관성이 없습니다.[3]마이크로소프트 Internet Explorer는 캐시된 자격 증명을 지우는 전용 자바스크립트 메서드를 제공합니다.[4]
<대본>문서.exec 명령어('인증 캐시 지우기');</대본>
최신 브라우저에서는 일반적으로 기본 인증을 위해 캐시된 자격 증명이 검색 기록을 지울 때 지워집니다.대부분의 브라우저는 사용자가 자격 증명만 특별히 지울 수 있지만 이 옵션을 찾기 어려울 수도 있으며 일반적으로 방문한 모든 사이트에 대한 자격 증명을 지울 수 있습니다.[5][6]
서버측 메커니즘을 사용하지 않는 한 자격 증명을 강제로 강제하는 것은 능동적으로 방지되거나 탐지되지 않습니다.
의전
서버측
서버가 인증되지 않은 요청을 수신한 후 사용자 에이전트가 서버를 향해 자신을 인증하도록 하려면 HTTP 401 Unauthorized status line과[7] WWW-Authenticate 헤더 필드를 사용하여 응답을 보내야 합니다.[8]
기본 인증을 위한 WWW-Authenticate 헤더 필드는 다음과 같이 구성됩니다.
WWW-Authenticate: Basic realm="User Visible Realm"
서버는 RFC 7617의 charset 파라미터를 포함하도록 선택할 수 있습니다.[3]
WWW-Authenticate: Basic realm="User Visible Realm", charset="UTF-8"
이 매개변수는 클라이언트가 사용자 이름과 비밀번호를 인코딩하기 위해 UTF-8을 사용할 것으로 서버가 예상함을 나타냅니다(아래 참조).
고객측
사용자 에이전트가 인증확인 정보를 서버로 보내려는 경우, 인증확인 헤더 필드를 사용할 수 있습니다.
Authorization 헤더 필드는 다음과 같이 구성됩니다.[9]
- 사용자 이름과 암호는 단일 콜론(ii)과 결합됩니다.이는 사용자 이름 자체에 콜론이 포함될 수 없음을 의미합니다.
- 결과 문자열은 옥텟 시퀀스로 인코딩됩니다.이 인코딩에 사용할 문자 집합은 US-ASCII와 호환되는 한 기본적으로 지정되지 않지만, 서버는 charset 매개변수를 전송하여 UTF-8의 사용을 제안할 수 있습니다.[9]
- 결과 문자열은 Base64(+/ 및 패딩 포함)의 변형을 사용하여 인코딩됩니다.
- 그런 다음, 인가 방법 및 공백 문자(예: "Basic")가 인코딩된 문자열 앞에 추가됩니다.
예를 들어 브라우저가 알라딘을 사용자 이름으로 사용하고 열린 참깨를 암호로 사용하는 경우 필드의 값은 알라딘의 Base64 인코딩:open 참깨 또는 QWxhZGRpbjpvcGVuIHNlc2FtZQ==.그러면 Authorization 헤더 필드가 다음과 같이 나타납니다.
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
참고 항목
- 액세스 인증 다이제스트
- HTTP 헤더
- TLS-SRP, 서버에 동등한 암호(TLS로 암호화된 경우도 있음)를 전송하지 않으려면 대안으로 사용할 수 있습니다.
참고문헌 및 참고문헌
- ^ Luotonen, Ari (10 September 2022). "Announcing Access Authorization Documentation". www-talk@w3.org (Mailing list). Retrieved 7 February 2022.
- ^ "Hypertext Transfer Protocol -- HTTP/1.0". www.w3.org. W3C. 19 February 1996. Retrieved 7 February 2022.
- ^ a b "Is there a browser equivalent to IE's ClearAuthenticationCache?". StackOverflow. Retrieved March 15, 2013.
- ^ "
IDM_CLEARAUTHENTICATIONCACHE
command identifier". Microsoft. Retrieved March 15, 2013. - ^ "540516 - Usability: Allow users to clear HTTP Basic authentication details ('Logout')". bugzilla.mozilla.org. Retrieved 2020-08-06.
Clear Recent History->Active Logins (in the details) is used to clear the authentication.
- ^ "Clear browsing data - Computer - Google Chrome Help". support.google.com. Retrieved 2020-08-06.
Data that can be deleted[...]Passwords: Records of passwords you saved are deleted.
- ^ "RFC 1945 Section 11. Access Authentication". IETF. May 1996. p. 46. Retrieved 3 February 2017.
- ^ Fielding, Roy T.; Berners-Lee, Tim; Henrik, Frystyk. "Hypertext Transfer Protocol -- HTTP/1.0". tools.ietf.org.
- ^ a b Reschke, Julian. "The 'Basic' HTTP Authentication Scheme". tools.ietf.org.
외부 링크
- "RFC 7235 - Hypertext Transfer Protocol (HTTP/1.1): Authentication". Internet Engineering Task Force (IETF). June 2014...