X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=security%2Feclipse%2Fplugins%2Forg.argeo.security.equinox%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fequinox%2FCurrentUser.java;h=12cda53710fbd4fc1248806c962bc0c72c48a0d9;hb=8fa413581f5a42ace1817da8c84c86e8ea47fb15;hp=d89ddee5a62c0c3dcd33fe66f8bf3a8201d314a1;hpb=83dc7b38160651626d00f6048f20183e01ad323a;p=lgpl%2Fargeo-commons.git diff --git a/security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/CurrentUser.java b/security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/CurrentUser.java index d89ddee5a..12cda5371 100644 --- a/security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/CurrentUser.java +++ b/security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/CurrentUser.java @@ -1,14 +1,16 @@ package org.argeo.security.equinox; +import java.security.AccessController; import java.security.Principal; import java.util.Collections; import java.util.HashSet; import java.util.Set; import javax.security.auth.Subject; +import javax.security.auth.login.LoginException; +import org.argeo.ArgeoException; import org.eclipse.equinox.security.auth.ILoginContext; -import org.eclipse.equinox.security.auth.LoginContextFactory; import org.springframework.security.Authentication; import org.springframework.security.GrantedAuthority; @@ -34,8 +36,8 @@ public class CurrentUser { private final static ILoginContext getLoginContext() { return EquinoxSecurity.getLoginContext(); -// return LoginContextFactory -// .createContext(EquinoxSecurity.CONTEXT_SPRING); + // return LoginContextFactory + // .createContext(EquinoxSecurity.CONTEXT_SPRING); } // private static void login() { @@ -48,17 +50,25 @@ public class CurrentUser { public final static Subject getSubject() { - Subject subject = null; + Subject subject = Subject.getSubject(AccessController.getContext()); // subject = Subject.getSubject(AccessController.getContext()); - try { - getLoginContext().login(); - subject = getLoginContext().getSubject(); - } catch (Exception e) { - throw new RuntimeException("Cannot retrieve subject", e); - } + if (subject == null) + try { + getLoginContext().login(); + subject = getLoginContext().getSubject(); + } catch (Exception e) { + throw new ArgeoException("Cannot retrieve subject", e); + } return subject; } + public static void logout() { + try { + getLoginContext().logout(); + } catch (LoginException e) { + throw new ArgeoException("Cannot log out", e); + } + } }