You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2017/10/18 22:28:51 UTC
[geode] branch develop updated: GEODE-3857: Pulse login fails after
second login (#939)
This is an automated email from the ASF dual-hosted git repository.
jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new bfdaeba GEODE-3857: Pulse login fails after second login (#939)
bfdaeba is described below
commit bfdaebafb63419efb4f71420bf36a3ef2ae68c34
Author: Jens Deppe <jd...@pivotal.io>
AuthorDate: Wed Oct 18 15:28:49 2017 -0700
GEODE-3857: Pulse login fails after second login (#939)
* GEODE-3857: Pulse login fails after second login
* GEODE-3857: Consolidate actions for logging out
- Close the JMX connection and remove the reference from the cluster map in one
place.
---
.../java/org/apache/geode/test/junit/rules/HttpClientRule.java | 4 ++++
.../java/org/apache/geode/tools/pulse/PulseSecurityTest.java | 7 +++++++
.../org/apache/geode/tools/pulse/internal/data/Repository.java | 10 ++++++++++
.../tools/pulse/internal/security/GemFireAuthentication.java | 4 ----
.../pulse/internal/security/GemFireAuthenticationProvider.java | 3 +--
.../geode/tools/pulse/internal/security/LogoutHandler.java | 3 ++-
6 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/geode-assembly/src/test/java/org/apache/geode/test/junit/rules/HttpClientRule.java b/geode-assembly/src/test/java/org/apache/geode/test/junit/rules/HttpClientRule.java
index cfff7c1..8434136 100644
--- a/geode-assembly/src/test/java/org/apache/geode/test/junit/rules/HttpClientRule.java
+++ b/geode-assembly/src/test/java/org/apache/geode/test/junit/rules/HttpClientRule.java
@@ -73,6 +73,10 @@ public class HttpClientRule extends ExternalResource {
.contains("/pulse/clusterDetail.html");
}
+ public HttpResponse logoutFromPulse() throws Exception {
+ return get("/pulse/clusterLogout");
+ }
+
public HttpResponse get(String uri, String... params) throws Exception {
return httpClient.execute(host, buildHttpGet(uri, params));
}
diff --git a/geode-assembly/src/test/java/org/apache/geode/tools/pulse/PulseSecurityTest.java b/geode-assembly/src/test/java/org/apache/geode/tools/pulse/PulseSecurityTest.java
index a28ae59..42d8411 100644
--- a/geode-assembly/src/test/java/org/apache/geode/tools/pulse/PulseSecurityTest.java
+++ b/geode-assembly/src/test/java/org/apache/geode/tools/pulse/PulseSecurityTest.java
@@ -108,4 +108,11 @@ public class PulseSecurityTest {
assertThat(result.toString()).contains("No Data Found");
}
+ @Test
+ public void loginAfterLogout() throws Exception {
+ client.loginToPulseAndVerify("data", "data");
+ client.logoutFromPulse();
+ client.loginToPulseAndVerify("data", "data");
+ client.logoutFromPulse();
+ }
}
diff --git a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Repository.java b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Repository.java
index c3a33fd..9a03349 100644
--- a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Repository.java
+++ b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Repository.java
@@ -136,6 +136,16 @@ public class Repository {
}
}
+ public void logoutUser(String username) {
+ Cluster data = clusterMap.remove(username);
+ if (data != null) {
+ try {
+ data.getJMXConnector().close();
+ } catch (Exception e) {
+ // We're logging out so this can be ignored
+ }
+ }
+ }
// This method is used to remove all cluster threads
public void removeAllClusters() {
diff --git a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/security/GemFireAuthentication.java b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/security/GemFireAuthentication.java
index dc75735..62de395 100644
--- a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/security/GemFireAuthentication.java
+++ b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/security/GemFireAuthentication.java
@@ -81,8 +81,4 @@ public class GemFireAuthentication extends UsernamePasswordAuthenticationToken {
}
- public JMXConnector getJmxc() {
- return jmxc;
- }
-
}
diff --git a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/security/GemFireAuthenticationProvider.java b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/security/GemFireAuthenticationProvider.java
index 2b110bc..2d3f0b1 100644
--- a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/security/GemFireAuthenticationProvider.java
+++ b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/security/GemFireAuthenticationProvider.java
@@ -44,8 +44,7 @@ public class GemFireAuthenticationProvider implements AuthenticationProvider {
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
if (authentication instanceof GemFireAuthentication) {
GemFireAuthentication gemAuth = (GemFireAuthentication) authentication;
- logger.debug("GemAuthentication is connected? = {}", gemAuth.getJmxc());
- if (gemAuth.getJmxc() != null && gemAuth.isAuthenticated())
+ if (gemAuth.isAuthenticated())
return gemAuth;
}
diff --git a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/security/LogoutHandler.java b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/security/LogoutHandler.java
index d685964..16200c8 100644
--- a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/security/LogoutHandler.java
+++ b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/security/LogoutHandler.java
@@ -14,6 +14,7 @@
*/
package org.apache.geode.tools.pulse.internal.security;
+import org.apache.geode.tools.pulse.internal.data.Repository;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.security.core.Authentication;
@@ -41,7 +42,7 @@ public class LogoutHandler extends SimpleUrlLogoutSuccessHandler implements Logo
logger.debug("Invoked #LogoutHandler ...");
GemFireAuthentication gemauthentication = (GemFireAuthentication) authentication;
if (gemauthentication != null) {
- gemauthentication.getJmxc().close();
+ Repository.get().logoutUser(gemauthentication.getName());
logger.info("#LogoutHandler : Closing GemFireAuthentication JMX Connection...");
}
super.onLogoutSuccess(request, response, authentication);
--
To stop receiving notification emails like this one, please contact
['"commits@geode.apache.org" <co...@geode.apache.org>'].