0

ドキュメントによると、署名キー リゾルバーは動的にキーを取得できます: https://github.com/jwtk/jjwt#signing-key-resolver

次のコードは、非ブロッキングの方法で公開鍵を取得する kotlin サスペンド関数を呼び出します。

val parser =
            Jwts.parserBuilder()
                .setSigningKeyResolver(object : SigningKeyResolverAdapter() {
                    override fun resolveSigningKey(header: JwsHeader<out JwsHeader<*>>, claims: Claims?): Key {
                        return runBlocking {
                            retrievePublicKey(header["kid"])
                        }
                    }
                }).build()
        val claims = parser.parseClaimsJws(jwtString).body

これがサスペンド関数の定義です

suspend fun retrievePublicKey(key:String):PublicKey {
...
}

問題は、このコードが thread( runBlocking) をブロックする必要があることです。それ以外の場合は機能しません。

この課題は、他のすべての非同期フレームワーク (rxjava、listenablefuture、completablefuture など) にも存在します。

4

1 に答える 1