You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2017/05/22 03:24:49 UTC

kylin git commit: KYLIN-2589 fix MessageDigest not thread safe in KylinAuthenticationProvider

Repository: kylin
Updated Branches:
  refs/heads/2.0.x eb30e3ca4 -> 9ae792c51


KYLIN-2589 fix MessageDigest not thread safe in KylinAuthenticationProvider


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/9ae792c5
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/9ae792c5
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/9ae792c5

Branch: refs/heads/2.0.x
Commit: 9ae792c51a934c17dcc76795f3ca064b468d26cf
Parents: eb30e3c
Author: shaofengshi <sh...@apache.org>
Authored: Mon May 22 11:24:38 2017 +0800
Committer: shaofengshi <sh...@apache.org>
Committed: Mon May 22 11:24:46 2017 +0800

----------------------------------------------------------------------
 .../security/KylinAuthenticationProvider.java   | 20 +++++++-------------
 1 file changed, 7 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/9ae792c5/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java b/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java
index d0dd06a..ffe9811 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/security/KylinAuthenticationProvider.java
@@ -18,10 +18,9 @@
 
 package org.apache.kylin.rest.security;
 
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.Arrays;
-
+import com.google.common.hash.HashFunction;
+import com.google.common.hash.Hashing;
+import org.apache.kylin.common.util.ByteArray;
 import org.apache.kylin.rest.service.UserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -55,26 +54,21 @@ public class KylinAuthenticationProvider implements AuthenticationProvider {
     //Embedded authentication provider
     private AuthenticationProvider authenticationProvider;
 
-    MessageDigest md = null;
+    private HashFunction hf = null;
 
     public KylinAuthenticationProvider(AuthenticationProvider authenticationProvider) {
         super();
         Assert.notNull(authenticationProvider, "The embedded authenticationProvider should not be null.");
         this.authenticationProvider = authenticationProvider;
-        try {
-            md = MessageDigest.getInstance("MD5");
-        } catch (NoSuchAlgorithmException e) {
-            throw new RuntimeException("Failed to init Message Digest ", e);
-        }
+        hf = Hashing.murmur3_128();
     }
 
     @Override
     public Authentication authenticate(Authentication authentication) throws AuthenticationException {
         Authentication authed = null;
         Cache userCache = cacheManager.getCache("UserCache");
-        md.reset();
-        byte[] hashKey = md.digest((authentication.getName() + authentication.getCredentials()).getBytes());
-        String userKey = Arrays.toString(hashKey);
+        byte[] hashKey = hf.hashString(authentication.getName() + authentication.getCredentials()).asBytes();
+        ByteArray userKey = new ByteArray(hashKey);
 
         Element authedUser = userCache.get(userKey);
         if (null != authedUser) {