From 7bc9403c96bbae11358978358cc902e3f2c6e508 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sat, 7 Nov 2015 12:30:49 +0000 Subject: [PATCH] Log out kernel after authorisation in order not to propagate access context git-svn-id: https://svn.argeo.org/commons/trunk@8558 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../src/org/argeo/cms/internal/kernel/Kernel.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java index 1f562b817..71b1a5bdd 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java @@ -29,6 +29,8 @@ import javax.jcr.RepositoryFactory; import javax.jcr.Session; import javax.jcr.SimpleCredentials; import javax.security.auth.Subject; +import javax.security.auth.login.LoginContext; +import javax.security.auth.login.LoginException; import javax.transaction.TransactionManager; import javax.transaction.TransactionSynchronizationRegistry; import javax.transaction.UserTransaction; @@ -160,6 +162,13 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener { throw new ArgeoException("Cannot initialize", e); } finally { Thread.currentThread().setContextClassLoader(currentContextCl); + // FIXME better manage lifecycle. + try { + new LoginContext(LOGIN_CONTEXT_KERNEL, + nodeSecurity.getKernelSubject()).logout(); + } catch (LoginException e) { + e.printStackTrace(); + } } long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime(); @@ -553,7 +562,7 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener { rootThreadGroup.enumerate(threads); int nonDameonCount = 0; for (Thread t : threads) - if (!t.isDaemon()) + if (t!=null && !t.isDaemon()) nonDameonCount++; return nonDameonCount; } -- 2.30.2