Большое спасибо за слишком точный ответ. У меня есть доступ к веб-ключу JSON, и я также добавил его в JWTAuth.create, и теперь JWTCreate не выдает никаких исключений. Однако provider.authenticate всегда не может его аутентифицировать, даже если я использую аутентифицированный токен JWT, отправляемый из внешнего интерфейса.
Я использовал следующий способ для создания объекта JWTAuth.
var jsonObject = JsonObject("<I Copied all contents of Json Web Key here.>")
var provider = JWTAuth.create(myvertx, jsonObject)
Тогда я использовал
var idJson = JsonObject()
idJson.put("jwt", myJWTToken)
var optionsJson = JsonObject()
optionsJson.put("ignoreExpiration",true)
idJson.put("options", optionsJson)
provider.authenticate(idJson, { asyncresult ->
println("Is authenticated = ${asyncresult.succeeded()}")
})
Но когда я попытался использовать Vertx способ предоставления открытого ключа с использованием PubSecKeyOptions и JWTAuthOptions, скопировав ключ из URL-адреса сертификатов OneLogin, он выдал исключение «InvalidKeyException»
Caused by: java.security.InvalidKeyException: IOException: DerInputStream.getLength(): lengthTag=71, too big.
at sun.security.x509.X509Key.decode(X509Key.java:398)
at sun.security.x509.X509Key.decode(X509Key.java:403)
at sun.security.rsa.RSAPublicKeyImpl.<init>(RSAPublicKeyImpl.java:86)
at sun.security.rsa.RSAKeyFactory.generatePublic(RSAKeyFactory.java:298)
at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:201)
... 51 more