Java 如何使用公钥使用vertx验证JWT令牌
我正在将Vertx与Kotlin一起使用,希望对JWT令牌进行身份验证 我在Json Web密钥文件中有一个登录名的公钥Java 如何使用公钥使用vertx验证JWT令牌,java,kotlin,jwt,vert.x,onelogin,Java,Kotlin,Jwt,Vert.x,Onelogin,我正在将Vertx与Kotlin一起使用,希望对JWT令牌进行身份验证 我在Json Web密钥文件中有一个登录名的公钥 { "keys": [ { "kty": "RSA", "kid": "JRcO4nxs5jgc8YdN7I2hLO4V_ql1bdoiMXmcYgHm4Hs", "n": "z8fZsz...Something..GHSTAoQw", "e": "AQAB" } ] } 如何在Json Web密钥文件中使用上述公钥来验证JWT令牌是否有效 我使用的
{ "keys": [
{
"kty": "RSA",
"kid": "JRcO4nxs5jgc8YdN7I2hLO4V_ql1bdoiMXmcYgHm4Hs",
"n": "z8fZsz...Something..GHSTAoQw",
"e": "AQAB"
} ] }
如何在Json Web密钥文件中使用上述公钥来验证JWT令牌是否有效
我使用的类/方法是JWTAuth.create(vertx,config)
var config=JWTAuthOptions(
pubSecKeys=listOf(PubSecKeyOptions(
算法=“RS256”,
publicKey=“我已经找到了上述问题的解决方案。因此,如果您有一个返回Json Web密钥文件的“certs”url,那么您可以从中创建一个java.security.publicKey对象,该对象可以与PubSecKeyOptions对象一起使用
您需要读取键“n”和“e”的值,“n”是被调用的模,“e”是被调用的指数
val n = Base64.getUrlDecoder().decode(nValue.toByteArray(StandardCharsets.UTF_8))
val e = Base64.getUrlDecoder().decode(eValue.toByteArray(StandardCharsets.UTF_8))
val thePublicKeyINeeded: PublicKey= =KeyFactory.getInstance("RSA).generatePublic(RSAPublicKeySpec(n, e))
val encodedBase64PublicKey:String = Base64.getEncoder().encodeToString(thePublicKeyINeeded.encoded)
var config = JWTAuthOptions(
pubSecKeys = listOf(PubSecKeyOptions(
algorithm = "RS256",
publicKey = encodedBase64PublicKey)))
val n = Base64.getUrlDecoder().decode(nValue.toByteArray(StandardCharsets.UTF_8))
val e = Base64.getUrlDecoder().decode(eValue.toByteArray(StandardCharsets.UTF_8))
val thePublicKeyINeeded: PublicKey= =KeyFactory.getInstance("RSA).generatePublic(RSAPublicKeySpec(n, e))
val encodedBase64PublicKey:String = Base64.getEncoder().encodeToString(thePublicKeyINeeded.encoded)
var config = JWTAuthOptions(
pubSecKeys = listOf(PubSecKeyOptions(
algorithm = "RS256",
publicKey = encodedBase64PublicKey)))