[kotlin] ktor で basic auth したい

ktor-auth コンポーネントで簡単に設定できます。

    compile "org.jetbrains.ktor:ktor-auth:$ktor_version"

で、あとは以下のように認証を設定する。設定した principal をコントローラ内でも取得可能。

        route("/") {
                authentication {
                    basicAuthentication("your-app-realm") { credentials ->
                        val username = credentials.name
                        val password = credentials.password
                        if (checkAuth(username, password)) {
                            UserIdPrincipal(username, password)
                        } else {
                            null
                        }
                    }
                }

            get("/hello") {
                val name = call.principal<UserIdPrincipal>()!!.name
                call.respondText("Hello $name")
            }
        }

簡単ですね。

Published: 2017-05-26(Fri) 23:45