在何处获取用于验证Java或Kotlin中的JWT令牌的公钥

Adn*_*aza 5 java jwt kotlin vert.x

我在后端使用Vertx的Kotlin,并且从One Login获得身份验证后,前端将JWT令牌转发给我。现在,我要确保令牌有效而不是假的(伪造的)。如果我点击以下链接,它表示我需要一个公共密钥才能创建JWTAuth对象,该对象可用于调用身份验证进行验证。 https://vertx.io/docs/vertx-auth-jwt/kotlin/

我需要知道在哪里可以获取公钥?

Pau*_*pes 4

我不了解 OneLogin,但从他们的文档中我可以看到他们是 SAML/OpenId Connect 提供商,因此可以轻松地从他们的配置中检索公钥。根据他们的文档,您可以从以下位置找到您的实例配置:

https://<subdomain>.onelogin.com/oidc/.well-known/openid-configuration
Run Code Online (Sandbox Code Playgroud)

从这个文件中,您应该查找jwks_uri包含如下值的键:https://acme.onelogin.com/oidc/certs。如果您获得此 URL,您将获得类似于以下内容的 JSON:

{
  "keys": [
    {
      "kty": "RSA",
      "kid": "JRcO4nxs5jgc8YdN7I2hLO4V_ql1bdoiMXmcYgHm4Hs",
      "n": "z8fZsz...GHSTAoQw",
      "e": "AQAB"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

该文件是一个 JSON Web 密钥(链)。可以将该 JSON 提供给 JWTAuth 以加载密钥并执行您需要的验证。作为 3.6 的旁注,OpenId Connect DiscoveryOAuth2 模块将提供适当的支持,这意味着您无需再摆弄它,只需传递 URL(如果您的提供程序和所有内容都已正确配置)即可。