具有动态客户端 ID 和密钥的 Ktor Oauth

问题描述 投票:0回答:1

我是 Ktor 的新手,正在致力于创建 oauth 功能, 我想实现 Oauth 功能,但我的 clientID 和 SecretKey 因用户而异。

我尝试参考以下官方文档,发现插件安装时需要设置ClientID和SecretKey。 https://ktor.io/docs/oauth.html

这不适合我的情况,因为我需要能够根据调用

/login
的用户设置ClientID和SecretID。

任何有关我如何实现这一目标的建议将不胜感激。

kotlin oauth-2.0 ktor kotlin-exposed
1个回答
0
投票

分配给

providerLookup
属性的块会在每次需要访问 OAuth2 设置的调用时执行。另外,在块中,
this
指向
ApplicationCall
对象。因此,您可以在那里编写从数据库获取客户端凭据的逻辑。这是一个例子:

install(Authentication) {
    oauth("oauth") {
        providerLookup = {
            // val clientId = db.query("...")
            // val clientSecret = db.query("...")
            OAuthServerSettings.OAuth2ServerSettings(
                // ...
                clientId = clientId,
                clientSecret = clientSecret,
                // ...
            )
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.