0

在验证 JWT 时,我有一个允许的客户端 ID 列表的场景。我将客户端 ID 作为受众声明放入 JWT 中,但是在验证时我需要与列表进行比较。

我尝试了以下方法:

val allowedClients = listof("client1", "client2")
val validClaims= JWTClaimsSet.Builder()
        .issuer("myIssuer")
        .audience(allowedClients)
        .build()

val jwtProcessor: ConfigurableJWTProcessor<SecurityContext> = DefaultJWTProcessor()
jwtProcessor.jwsKeySelector = keySelector

jwtProcessor.jwtClaimsSetVerifier = DefaultJWTClaimsVerifier(
        //exact match claims
        validClaims,
        //Required claims
        HashSet(listOf("exp", "iss")))
jwtProcessor.jwsKeySelector = keySelector

但是,如果现在只使用我正在执行的一个客户端 ID 发出 JWT,那么验证将失败

com.nimbusds.jwt.proc.BadJWTException: JWT aud claim has value [client2], must be [client1, client2]

我该怎么做才能使验证者期望任何客户端 ID 在观众声明中,但不是完整列表?当然,另一种选择是在开头的观众声明中添加一个客户端 ID,但我想避免这种情况。

4

0 回答 0