From ba4c85a2fe28875c86158a6305dda71d1d49e343 Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Wed, 26 Sep 2018 15:35:40 +0200
Subject: [PATCH] [fix] Authentication service - fix token & challenge
 management

---
 .../challenge/ChallengeMessageStore.java      | 24 +++++++------------
 .../security/token/SecurityTokenStore.java    |  2 +-
 2 files changed, 9 insertions(+), 17 deletions(-)

diff --git a/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/security/challenge/ChallengeMessageStore.java b/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/security/challenge/ChallengeMessageStore.java
index 2847036d..4a9e5097 100644
--- a/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/security/challenge/ChallengeMessageStore.java
+++ b/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/security/challenge/ChallengeMessageStore.java
@@ -24,8 +24,7 @@ package org.duniter.elasticsearch.security.challenge;
 
 import org.duniter.core.util.Preconditions;
 import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
+import com.google.common.cache.Cache;
 import org.duniter.core.util.ObjectUtils;
 import org.duniter.core.util.StringUtils;
 import org.elasticsearch.common.inject.Inject;
@@ -45,19 +44,19 @@ public class ChallengeMessageStore {
 
     private String prefix;
     private long validityDurationInSeconds;
-    private LoadingCache<String, String> chalengeMessageCache;
+    private Cache<String, String> store;
 
     @Inject
     public ChallengeMessageStore(Settings settings) {
         this.prefix = settings.get("duniter4j.auth.challenge.prefix", "duniter4j-challenge-");
         this.validityDurationInSeconds = settings.getAsInt("duniter4j.auth.challengeValidityDuration", 10);
-        this.chalengeMessageCache = initGeneratedMessageCache();
+        this.store = initGeneratedMessageCache();
     }
 
     public boolean validateChallenge(String challenge) {
         Preconditions.checkArgument(StringUtils.isNotBlank(challenge));
 
-        String storedChallenge = chalengeMessageCache.getIfPresent(challenge);
+        String storedChallenge = store.getIfPresent(challenge);
 
         // if no value in cache => maybe challenge expired
         return ObjectUtils.equals(storedChallenge, challenge);
@@ -65,8 +64,8 @@ public class ChallengeMessageStore {
 
     public String createNewChallenge() {
         String challenge = newChallenge();
-        chalengeMessageCache.put(challenge, challenge);
-        return newChallenge();
+        store.put(challenge, challenge);
+        return challenge;
     }
 
     /* -- internal methods -- */
@@ -75,16 +74,9 @@ public class ChallengeMessageStore {
         return String.valueOf(prefix + System.currentTimeMillis() * System.currentTimeMillis());
     }
 
-
-    protected LoadingCache<String, String> initGeneratedMessageCache() {
+    protected Cache<String, String> initGeneratedMessageCache() {
         return CacheBuilder.newBuilder()
                 .expireAfterWrite(validityDurationInSeconds, TimeUnit.SECONDS)
-                .build(new CacheLoader<String, String>() {
-                    @Override
-                    public String load(String challenge) throws Exception {
-                        // not used. Filled manually
-                        return null;
-                    }
-                });
+                .build();
     }
 }
diff --git a/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/security/token/SecurityTokenStore.java b/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/security/token/SecurityTokenStore.java
index 65bd3da5..233cfc9f 100644
--- a/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/security/token/SecurityTokenStore.java
+++ b/cesium-plus-pod-core/src/main/java/org/duniter/elasticsearch/security/token/SecurityTokenStore.java
@@ -64,7 +64,7 @@ public class SecurityTokenStore {
 
     public String createNewToken(String challenge, String signature, String pubkey) {
         String token = newToken(challenge, signature, pubkey);
-        tokenCache.put(challenge, challenge);
+        tokenCache.put(token, token);
         return token;
     }
 
-- 
GitLab