From ba482fb9b73b43e5fbe6a0e206a103535f8a0c42 Mon Sep 17 00:00:00 2001
From: Xiajijian <1176061145@qq.com>
Date: Wed, 29 Oct 2025 17:20:34 +0800
Subject: [PATCH] 1.航线(kmz)业务增加,Minio文件路径字段。 2.增加方法从URL中提取文件路径部分。

---
 ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java b/ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java
index 758b8b3..5097bce 100644
--- a/ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java
+++ b/ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java
@@ -22,6 +22,7 @@
 import java.net.URL;
 import java.security.InvalidKeyException;
 import java.security.NoSuchAlgorithmException;
+import java.security.ProviderException;
 import java.security.SecureRandom;
 import java.security.cert.X509Certificate;
 import java.util.Objects;
@@ -44,8 +45,8 @@
         return OssTypeEnum.MINIO.getType();
     }
 
-    @Override
-    public CredentialsDTO getCredentials() {
+
+    public CredentialsDTO getCredentials1111() {
         try {
             AssumeRoleProvider provider = new AssumeRoleProvider(endpoint, accessKey,
                     secretKey, Math.toIntExact(OssConfiguration.expire),
@@ -57,6 +58,53 @@
         }
         return null;
     }
+    @Override
+    public CredentialsDTO getCredentials() {
+        try {
+            // 创建自签证书的 OkHttpClient
+            TrustManager[] trustAllCerts = new TrustManager[]{
+                    new X509TrustManager() {
+                        @Override
+                        public void checkClientTrusted(X509Certificate[] chain, String authType) {}
+                        @Override
+                        public void checkServerTrusted(X509Certificate[] chain, String authType) {}
+                        @Override
+                        public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[]{}; }
+                    }
+            };
+            SSLContext sslContext = SSLContext.getInstance("TLS");
+            sslContext.init(null, trustAllCerts, new SecureRandom());
+            OkHttpClient httpClient = new OkHttpClient.Builder()
+                    .sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustAllCerts[0])
+                    .hostnameVerifier((hostname, session) -> true)
+                    .build();
+
+            // 构建 AssumeRoleProvider,使用自定义 httpClient
+            AssumeRoleProvider provider = new AssumeRoleProvider(
+                    endpoint,
+                    accessKey,
+                    secretKey,
+                    Math.toIntExact(OssConfiguration.expire),
+                    null,
+                    OssConfiguration.region,
+                    null,
+                    null,
+                    null,
+                    httpClient
+            );
+
+            // 获取 STS 凭证
+            var stsCredentials = provider.fetch();
+            return new CredentialsDTO(stsCredentials, OssConfiguration.expire);
+
+        } catch (ProviderException e) {
+            log.error("Failed to parse STS response", e);
+            throw new RuntimeException("STS response parse failed", e);
+        } catch (NoSuchAlgorithmException | java.security.KeyManagementException e) {
+            log.error("Failed to create custom SSL context", e);
+            throw new RuntimeException("SSL setup failed", e);
+        }
+    }
 
     @Override
     public URL getObjectUrl(String bucket, String objectKey) {

--
Gitblit v1.9.3