From 24b4f02a70922ec027387be0f9e5fe608913d03c Mon Sep 17 00:00:00 2001
From: leesam <leesam@leesam.cn>
Date: 星期三, 20 三月 2024 11:05:57 +0800
Subject: [PATCH] [bugfix]读取jwk的Bug修复

---
 src/main/java/com/genersoft/iot/vmp/conf/security/JwtUtils.java |   36 ++++++++++++------------------------
 src/main/resources/jwk.json                                     |    1 +
 2 files changed, 13 insertions(+), 24 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/conf/security/JwtUtils.java b/src/main/java/com/genersoft/iot/vmp/conf/security/JwtUtils.java
index 949bcba..eacff18 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/security/JwtUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/security/JwtUtils.java
@@ -24,14 +24,9 @@
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
 import java.util.List;
@@ -86,29 +81,22 @@
 
     /**
      * 鍒涘缓瀵嗛挜瀵�
+     *
      * @throws JoseException JoseException
      */
     private RsaJsonWebKey generateRsaJsonWebKey() throws JoseException {
         RsaJsonWebKey rsaJsonWebKey = null;
-        try {
-            URL url = getClass().getClassLoader().getResource("jwk.json");
-            if (url != null) {
-                URI uri = url.toURI();
-                Path path = Paths.get(uri);
-                if (Files.exists(path)) {
-                    byte[] allBytes = Files.readAllBytes(path);
-                    String jwkJson = new String(allBytes, StandardCharsets.UTF_8);
-                    final JsonWebKeySet jsonWebKeySet = new JsonWebKeySet(jwkJson);
-                    List<JsonWebKey> jsonWebKeys = jsonWebKeySet.getJsonWebKeys();
-                    if (!jsonWebKeys.isEmpty()) {
-                        JsonWebKey jsonWebKey = jsonWebKeys.get(0);
-                        if (jsonWebKey instanceof RsaJsonWebKey) {
-                            rsaJsonWebKey = (RsaJsonWebKey) jsonWebKey;
-                        }
-                    }
+        try (BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getClassLoader().getResourceAsStream("/jwk.json"), StandardCharsets.UTF_8))) {
+            String jwkJson = reader.readLine();
+            JsonWebKeySet jsonWebKeySet = new JsonWebKeySet(jwkJson);
+            List<JsonWebKey> jsonWebKeys = jsonWebKeySet.getJsonWebKeys();
+            if (!jsonWebKeys.isEmpty()) {
+                JsonWebKey jsonWebKey = jsonWebKeys.get(0);
+                if (jsonWebKey instanceof RsaJsonWebKey) {
+                    rsaJsonWebKey = (RsaJsonWebKey) jsonWebKey;
                 }
             }
-        } catch (URISyntaxException | IOException e) {
+        } catch (Exception e) {
             // ignored
         }
         if (rsaJsonWebKey == null) {
diff --git a/src/main/resources/jwk.json b/src/main/resources/jwk.json
new file mode 100644
index 0000000..912b8f3
--- /dev/null
+++ b/src/main/resources/jwk.json
@@ -0,0 +1 @@
+{"keys":[{"kty":"RSA","kid":"3e79646c4dbc408383a9eed09f2b85ae","n":"rThRAlbMRceko3NkymeSoN2ICVaDlNBLWv3cyLUeixjWcmuhnPv2JpXmgoxezKZfhH_0sChBof--BaaqSUukl9wWMW1bWCyFyU5qNczhQk3ANlhaLiSgXsqD-NKI3ObJjB-26fnOZb9QskCqrPW1lEtwgb9-skMAfGlh5kaDOKjYKI64DPSMMXpSiJEDM-7DK-TFfm0QfPcoH-k-1C02NHlGWehVUn9FUJ0TAiDxpKj28qOmYh7s1M7OU_h-Sso7LM-5zbftpcO6SINe81Gw9JPd7rKPCRxkw8ROSCCq-JH_zshM80kTK2nWcseGvhQ_4vKQIBp9PrAgCrGJHM160w","e":"AQAB","d":"AwS2NKo6iQS_k7GREg3X-kGh-zest00h4wYFcOHnFFlsczX47PlfArEeASxdAofrpi1soB0zd5UzRHnxAbH1vkexg076hoDQG__nzeQyEKu2K7xCZgdxW_V_cziH9gF3hZ-P2mfl9tPsng6OatElRt5BqaEingyY15ImiJK1-qi_LTx4gfwRfquKLbUgqJR4Tf6eKlwOzEo41Ilo26gnojNzWryB_XHG7lj6SngPDBJp7ty32je4Fv3A3hXt7JHDwloww6-xiRtUflDpSec4A-o-PHgbfoYLyM7mM4BDt4PM54EHm4u8WzypG0wNKDTiq4KSapei5xDbiG3RpngvAQ","p":"5kUHkGxnZvZT762Ex-0De2nYodAbbZNVR-eIPx2ng2VZmEbAU3cp_DxigpXWyQ0FwJ2Me8GvxnlbxJ7k7d-4AV2X8q6Q-UqXajHdudRU_QX05kPEgZ3xtPk5ekI0-u1BEQT7pY_gxlZC2mzXAcVLd-LwbVPuQEba5S4JMsjcHUE","q":"wJNa06-qZ2tWncGl7cfJdO-SJ_H3taowMhh-RsJmeVefjjN3pfVjjE0wG_rIP-BjjCB9OhvSnI8LDjoNu8uIg090DYnA6IUfZpWo3zjgedeyqQyXFVjjVQkn98zgp5NFLpuitZsl9-EHhh7JaZDCwaJ527MN3VCoQxeI75ggjxM","dp":"HQTH_kBbC5OxYjwIxrUswinFnia-viFaFvSrq-CN0rY8Az-vTxVuWhY2B-TgK3gTqIFyScpP34A9u1qW2Q9fffSQiInNRU1MJZrhKWED0NsmULprkjYYVsktoCWlzZWGpKFvIR8voW8Pf71FnziA2TvlNrHkDX-gaE9T422Cp8E","dq":"owJYqMWS1dYLTKBlx0ANbHl6W2u7xb_Y6h7HjTfzLBWazvEL_6QW7uVLqvN-XGuheDTsK6rvfWyr7BACHgvsc1JnJyqK64f8C4b1mnZ3tUt7RROONBi43ftRJLX9GHxV3F0LvvQkkI2gI8ydq0lJQkU5J1qKiuNCewBJ_p3kOZc","qi":"hNAZV6aWEEWfB1HkrfdtO6sjq9ceEod55ez82I1ZNgoKle8gpRkh3vw2EIJ_5lcw57s5rw8G-sCQPG1AQSZ6u9aURwHkIXjpIhLAlv6gvKkCh0smPPvnSiltJKOJsuHkrD6rGkV1f-MlCS51lKlk9xShQzkRidkNd4BUh0a7ktA"}]}
\ No newline at end of file

--
Gitblit v1.8.0