Ktor 클라이언트의 기본 인증
필수 의존성: io.ktor:ktor-client-auth
코드 예시: client-auth-basic
기본 인증 체계는 사용자 로그인에 사용될 수 있습니다. 이 체계에서 사용자 자격 증명은 Base64로 인코딩된 사용자 이름/비밀번호 쌍으로 전송됩니다.
서버 측에서 Ktor는 기본 인증 처리를 위한 Authentication 플러그인을 제공합니다.
기본 인증 흐름
기본 인증 흐름은 다음과 같습니다:
클라이언트는 서버 애플리케이션의 특정 리소스에
Authorization
헤더 없이 요청을 보냅니다.서버는 클라이언트에
401
(Unauthorized) 응답 상태로 응답하고,WWW-Authenticate
응답 헤더를 사용하여 기본 인증 체계가 경로를 보호하는 데 사용됨을 알려줍니다. 일반적인WWW-Authenticate
헤더는 다음과 같습니다:WWW-Authenticate: Basic realm="Access to the '/' path", charset="UTF-8"
Ktor 클라이언트는
sendWithoutRequest
함수를 사용하여WWW-Authenticate
헤더를 기다리지 않고 자격 증명을 보낼 수 있도록 합니다.일반적으로 클라이언트는 사용자가 자격 증명을 입력할 수 있는 로그인 대화 상자를 표시합니다. 그런 다음 클라이언트는 Base64로 인코딩된 사용자 이름과 비밀번호 쌍을 포함하는
Authorization
헤더와 함께 요청을 보냅니다. 예시:Authorization: Basic amV0YnJhaW5zOmZvb2Jhcg
서버는 클라이언트가 보낸 자격 증명을 검증하고 요청된 콘텐츠로 응답합니다.
기본 인증 구성
Basic
체계를 사용하여 Authorization
헤더에 사용자 자격 증명을 보내려면 basic
인증 공급자를 다음과 같이 구성해야 합니다:
install
블록 내에서 basic 함수를 호출합니다.BasicAuthCredentials를 사용하여 필요한 자격 증명을 제공하고 이 객체를 credentials 함수에 전달합니다.
realm
속성을 사용하여 렐름(realm)을 구성합니다.kotlinval client = HttpClient(CIO) { install(Auth) { basic { credentials { BasicAuthCredentials(username = "jetbrains", password = "foobar") } realm = "Access to the '/' path" } } }
선택적으로
WWW-Authenticate
헤더와 함께401
(Unauthorized) 응답을 기다리지 않고 초기 요청에서 자격 증명을 보내도록 설정할 수 있습니다.sendWithoutRequest
함수(boolean 반환)를 호출하고 요청 매개변수를 확인해야 합니다.kotlininstall(Auth) { basic { // ... sendWithoutRequest { request -> request.url.host == "0.0.0.0" } } }
전체 예시는 여기에서 찾을 수 있습니다: client-auth-basic.