Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用公钥使用vertx验证JWT令牌_Java_Kotlin_Jwt_Vert.x_Onelogin - Fatal编程技术网

Java 如何使用公钥使用vertx验证JWT令牌

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令牌是否有效 我使用的

我正在将Vertx与Kotlin一起使用,希望对JWT令牌进行身份验证

我在Json Web密钥文件中有一个登录名的公钥

{   "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)))