【问题标题】:How fix unsecured jwt-set-uri in spring security oauth?如何在 Spring Security oauth 中修复不安全的 jwt-set-uri?
【发布时间】:2020-03-25 19:04:36
【问题描述】:

我使用 keycloak 作为授权服务器,使用 spring boot 应用程序作为资源服务器。 Keycloak 使用 自签名 TLS。当我打开 keycloak jwk-set-uri 时,它看起来如下:

json格式的响应如下:

{
  "keys": [
    {
      "kid": "pI7XwYgG2l2ehgGg3XQ-N6Jc41_txjSzMQMWzLeyaiw",
      "kty": "RSA",
      "alg": "RS256",
      "use": "sig",
      "n": "nwGwgRywBMlKZreioz1nlo-PKWi...",
      "e": "AQAB",
      "x5c": [
        "MIICoTCCAYkCBgFte4jKkTANBgkqhki...jzxMCZL3Xkd4rs="
      ],
      "x5t": "CqljUhhfTCOMFMxORUXeotcSYxk",
      "x5t#S256": "4nlGCmpr6OYYHfkylCp2GGt9iefPRv_aq1DB..."
    }
  ]
}

JwtDecoder bean 定义如下:

@Bean
public JwtDecoder jwtDecoder(){
   return NimbusJwtDecoder.withJwkStUri("https://192.168.1.4:8080/.../openid-connect/certs")
}

当我用https 模式设置jwkSetUri 时,应用程序不能正常工作,但是如果我用http 模式设置它,应用程序可以正常工作。问题出在哪里?我该如何解决?

【问题讨论】:

    标签: java spring-boot jwk


    【解决方案1】:

    问题是自签名TLS没有在jvm中注册,所以必须注册如下:

    1. 从浏览器导出证书
    2. 使用keytool -import -alias example -keystore "C:\Program Files)\Java\jre1.6.0_22\lib\security\cacerts" -file certificate.cerkeytool -importcert -file certificate.cer -keystore "C:\Program Files)\Java\jre1.6.0_22\lib\security\cacerts" -alias example 命令将证书导入jvm。会询问密码,jvm默认密码是changeit
    3. 现在重新启动 PC,然后它就会运行 insha'allah。

    【讨论】:

      猜你喜欢
      • 2019-03-18
      • 2020-08-17
      • 2015-06-13
      • 2020-07-19
      • 1970-01-01
      • 2021-05-01
      • 2017-08-20
      相关资源
      最近更新 更多