From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-file/jnpf-file-yozo/jnpf-file-yozo-biz/src/main/java/jnpf/yozo/client/UaaAppAuthenticator.java |   92 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 92 insertions(+), 0 deletions(-)

diff --git a/jnpf-file/jnpf-file-yozo/jnpf-file-yozo-biz/src/main/java/jnpf/yozo/client/UaaAppAuthenticator.java b/jnpf-file/jnpf-file-yozo/jnpf-file-yozo-biz/src/main/java/jnpf/yozo/client/UaaAppAuthenticator.java
new file mode 100644
index 0000000..d9e1cee
--- /dev/null
+++ b/jnpf-file/jnpf-file-yozo/jnpf-file-yozo-biz/src/main/java/jnpf/yozo/client/UaaAppAuthenticator.java
@@ -0,0 +1,92 @@
+package jnpf.yozo.client;
+
+import jnpf.util.StringUtil;
+import jnpf.yozo.utils.SecretSignatureUtils;
+
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.Map;
+
+public class UaaAppAuthenticator implements AppAuthenticator {
+    public static final String OPEN_PARAM_PREFIX = "y_";
+    public static final String OPEN_PARAM_APPID = "y_appid";
+    public static final String OPEN_PARAM_SIGN = "y_SIGN";
+    private String signParamName;
+    private String paramNamePrefix;
+    private String appidParamName;
+
+    public UaaAppAuthenticator() {
+    }
+
+    public UaaAppAuthenticator(String signParamName, String paramNamePrefix, String appidParamName) {
+        this.signParamName = signParamName;
+        this.paramNamePrefix = paramNamePrefix;
+        this.appidParamName = appidParamName;
+    }
+
+    public String getSignParamName() {
+        return this.signParamName;
+    }
+
+    public void setSignParamName(String signParamName) {
+        this.signParamName = signParamName;
+    }
+
+    public String getParamNamePrefix() {
+        return this.paramNamePrefix;
+    }
+
+    public void setParamNamePrefix(String paramNamePrefix) {
+        this.paramNamePrefix = paramNamePrefix;
+    }
+
+    public String getAppidParamName() {
+        return this.appidParamName;
+    }
+
+    public void setAppidParamName(String appidParamName) {
+        this.appidParamName = appidParamName;
+    }
+
+    public String generateSign(String secret, Map<String, String[]> params) throws NoSuchAlgorithmException, InvalidKeyException {
+        String fullParamStr = this.uniqSortParams(params);
+        return SecretSignatureUtils.hmacSHA256(fullParamStr, secret);
+    }
+
+    private String uniqSortParams(Map<String, String[]> params) {
+        boolean prefix = StringUtil.isNotEmpty(this.paramNamePrefix);
+        params.remove(this.signParamName);
+        String[] paramKeys = new String[params.size()];
+        int idx = 0;
+        Iterator<String> var5 = params.keySet().iterator();
+
+        while(true) {
+            String param;
+            do {
+                if (!var5.hasNext()) {
+                    Arrays.sort(paramKeys, 0, idx);
+                    StringBuilder builder = new StringBuilder();
+                    for (String key : paramKeys) {
+                        String[] values =  params.get(key);
+                        if (values != null && values.length > 0) {
+                            Arrays.sort(values);
+                            for (String val : values) {
+                                builder.append(key).append("=").append(val);
+                            }
+                        } else {
+                            builder.append(key).append("=");
+                        }
+                    }
+
+                    return builder.toString();
+                }
+
+                param = var5.next();
+            } while(prefix && param.startsWith(this.paramNamePrefix));
+
+            paramKeys[idx++] = param;
+        }
+    }
+}

--
Gitblit v1.8.0