LDAP
必要的相依性:io.ktor:ktor-server-auth, io.ktor:ktor-server-auth-ldap
程式碼範例: auth-ldap
LDAP 是一種用於處理各種可儲存使用者資訊之目錄服務的協定。Ktor 允許您使用 basic、digest 或 form-based 驗證方案來驗證 LDAP 使用者。
您可以在 Ktor 伺服器中的驗證與授權 章節中取得有關 Ktor 驗證與授權的一般資訊。
新增相依性
若要啟用 LDAP 驗證,您需要在組建指令碼中包含 ktor-server-auth 和 ktor-server-auth-ldap 構件:
設定 LDAP
步驟 1:選擇驗證提供者
若要驗證 LDAP 使用者,您首先需要選擇一個用於使用者名稱與密碼校驗的驗證提供者。在 Ktor 中,basic、digest 或 form-based 提供者均可用於此目的。例如,若要使用 basic 驗證提供者,請在 install 區塊中呼叫 basic 函式。
import io.ktor.server.application.*
import io.ktor.server.auth.*
import io.ktor.server.auth.ldap.*
//...
install(Authentication) {
basic {
validate { credentials ->
// 驗證 LDAP 使用者
}
}
}validate 函式將用於檢查使用者憑據。
步驟 2:驗證 LDAP 使用者
若要驗證 LDAP 使用者,您需要呼叫 ldapAuthenticate 函式。此函式接受 UserPasswordCredential 並根據指定的 LDAP 伺服器進行校驗。
install(Authentication) {
basic("auth-ldap") {
validate { credentials ->
ldapAuthenticate(credentials, "ldap://0.0.0.0:389", "cn=%s,dc=ktor,dc=io")
}
}
}validate 函式在驗證成功時會傳回 UserIdPrincipal,若驗證失敗則傳回 null。
您可以選擇性地為已驗證使用者新增額外的校驗。
install(Authentication) {
basic("auth-ldap") {
validate { credentials ->
ldapAuthenticate(credentials, "ldap://localhost:389", "cn=%s,dc=ktor,dc=io") {
if (it.name == it.password) {
UserIdPrincipal(it.name)
} else {
null
}
}
}
}
}步驟 3:保護特定資源
設定 LDAP 後,您可以使用 authenticate 函式來保護應用程式中的特定資源。在驗證成功的情況下,您可以在路由處理常式中使用 call.principal 函式取得已驗證的 UserIdPrincipal,並獲取已驗證使用者的名稱。
routing {
authenticate("auth-ldap") {
get("/") {
call.respondText("Hello, ${call.principal<UserIdPrincipal>()?.name}!")
}
}
}您可以在此處找到完整的可執行範例:auth-ldap。
請記住,目前的 LDAP 實作是同步的。
