From 9905f6ce01abaa12d6b3f8c40a13d242632930ca Mon Sep 17 00:00:00 2001 From: LamGC Date: Tue, 17 Aug 2021 23:30:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=9B=A0=20Oracle=20?= =?UTF-8?q?=E8=BA=AB=E4=BB=BD=E9=85=8D=E7=BD=AE=E5=86=85=E5=AE=B9=E7=BC=BA?= =?UTF-8?q?=E5=A4=B1=E5=AF=BC=E8=87=B4=E5=8A=A0=E8=BD=BD=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准确来讲该问题并不是很严重, 但还是为此添加了验证步骤以更优雅的告知用户该配置有问题. --- .../oracle/sentry/OracleIdentityManager.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/java/net/lamgc/oracle/sentry/OracleIdentityManager.java b/src/main/java/net/lamgc/oracle/sentry/OracleIdentityManager.java index fef4423..832a470 100644 --- a/src/main/java/net/lamgc/oracle/sentry/OracleIdentityManager.java +++ b/src/main/java/net/lamgc/oracle/sentry/OracleIdentityManager.java @@ -1,5 +1,6 @@ package net.lamgc.oracle.sentry; +import com.google.common.base.Strings; import com.google.common.base.Throwables; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -69,6 +70,9 @@ public final class OracleIdentityManager { for (File configFile : configFiles) { try { AuthenticationDetailsProvider provider = loadFromConfigFile(configFile); + if (provider == null) { + continue; + } loadedCount ++; log.info("已成功加载身份配置文件.\n\tUserId: {}\n\tUsername: {}\n\tPath: {}", provider.getUserId(), @@ -93,6 +97,11 @@ public final class OracleIdentityManager { ConfigFileReader.ConfigFile config = ConfigFileReader.parse(identityConfig.getAbsolutePath()); + if (!checkIdentityProfileConfig(config)) { + log.warn("该配置文件缺少必要信息, 跳过加载.(Path: {})", identityConfig.getCanonicalPath()); + return null; + } + String keyFilePath = config.get("key_file"); if (keyFilePath.startsWith(".")) { @@ -117,6 +126,23 @@ public final class OracleIdentityManager { return provider; } + private boolean checkIdentityProfileConfig(ConfigFileReader.ConfigFile config) { + String[] fields = new String[] { + "key_file", + "region", + "tenancy", + "user", + "fingerprint" + }; + for (String field : fields) { + if (Strings.isNullOrEmpty(config.get(field))) { + return false; + } + } + return true; + } + + /** * 获取身份所属用户的名称. * @param provider 身份提供器.