Skip to content

LDAP

必要的相依性io.ktor:ktor-server-auth, io.ktor:ktor-server-auth-ldap

程式碼範例 auth-ldap

原生伺服器
Ktor 支援 Kotlin/Native,並允許您在沒有額外執行階段或虛擬機的情況下執行伺服器。
支援:✖️

LDAP 是一種用於處理各種可儲存使用者資訊之目錄服務的協定。Ktor 允許您使用 basicdigestform-based 驗證方案來驗證 LDAP 使用者。

您可以在 Ktor 伺服器中的驗證與授權 章節中取得有關 Ktor 驗證與授權的一般資訊。

新增相依性

若要啟用 LDAP 驗證,您需要在組建指令碼中包含 ktor-server-authktor-server-auth-ldap 構件:

Kotlin
Groovy
XML

設定 LDAP

步驟 1:選擇驗證提供者

若要驗證 LDAP 使用者,您首先需要選擇一個用於使用者名稱與密碼校驗的驗證提供者。在 Ktor 中,basicdigestform-based 提供者均可用於此目的。例如,若要使用 basic 驗證提供者,請在 install 區塊中呼叫 basic 函式。

kotlin
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 伺服器進行校驗。

kotlin
install(Authentication) {
    basic("auth-ldap") {
        validate { credentials ->
            ldapAuthenticate(credentials, "ldap://0.0.0.0:389", "cn=%s,dc=ktor,dc=io")
        }
    }
}

validate 函式在驗證成功時會傳回 UserIdPrincipal,若驗證失敗則傳回 null

您可以選擇性地為已驗證使用者新增額外的校驗。

kotlin
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,並獲取已驗證使用者的名稱。

kotlin
routing {
    authenticate("auth-ldap") {
        get("/") {
            call.respondText("Hello, ${call.principal<UserIdPrincipal>()?.name}!")
        }
    }
}

您可以在此處找到完整的可執行範例:auth-ldap

請記住,目前的 LDAP 實作是同步的。