Ktor 用戶端的基本身份驗證
必要相依性: io.ktor:ktor-client-auth
程式碼範例: client-auth-basic
Basic 身份驗證方案可用於使用者登入。在此方案中,使用者憑證以 Base64 編碼的使用者名稱/密碼對形式傳輸。
在伺服器端,Ktor 提供了 Authentication 外掛程式用於處理基本身份驗證。
基本身份驗證流程
基本身份驗證流程如下所示:
- 用戶端向伺服器應用程式中的特定資源發出未帶有
Authorization標頭的請求。 - 伺服器回應用戶端一個
401(未經授權) 回應狀態,並使用WWW-Authenticate回應標頭提供資訊,表明使用基本身份驗證方案來保護路由。一個典型的WWW-Authenticate標頭如下所示:
WWW-Authenticate: Basic realm="Access to the '/' path", charset="UTF-8"Ktor 用戶端允許您無需等待 WWW-Authenticate 標頭即可發送憑證,透過使用 sendWithoutRequest 函數。
- 通常,用戶端會顯示一個登入對話框,使用者可以在其中輸入憑證。然後,用戶端發出一個帶有
Authorization標頭的請求,其中包含使用 Base64 編碼的使用者名稱和密碼對,例如:
Authorization: Basic amV0YnJhaW5zOmZvb2Jhcg- 伺服器驗證用戶端發送的憑證並回應所請求的內容。
配置基本身份驗證
要使用 Basic 方案在 Authorization 標頭中發送使用者憑證,您需要按如下方式配置 basic 身份驗證提供者:
- 在
install區塊內呼叫 basic 函數。 - 使用 BasicAuthCredentials 提供所需憑證,並將此物件傳遞給 credentials 函數。
- 使用
realm屬性配置領域。
kotlin
val client = HttpClient(CIO) {
install(Auth) {
basic {
credentials {
BasicAuthCredentials(username = "jetbrains", password = "foobar")
}
realm = "Access to the '/' path"
}
}
}- 可選地,啟用在初始請求中發送憑證,無需等待帶有
WWW-Authenticate標頭的401(未經授權) 回應。您需要呼叫返回布林值的sendWithoutRequest函數並檢查請求參數。
kotlin
install(Auth) {
basic {
// ...
sendWithoutRequest { request ->
request.url.host == "0.0.0.0"
}
}
}您可以在此處找到完整範例:client-auth-basic。
