X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fauth%2FIdentLoginModule.java;h=ccf7fc724af1e8bf322c4c4545a84348883f3f9e;hb=b71546ddc74d6ca49d252806aafd491c75dfe1fb;hp=b4c49b285ed56ebe6e3ea729a7f6d61de67595d4;hpb=c1d7a7fa363100689019e733314723196280175b;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/auth/IdentLoginModule.java b/org.argeo.cms/src/org/argeo/cms/auth/IdentLoginModule.java index b4c49b285..ccf7fc724 100644 --- a/org.argeo.cms/src/org/argeo/cms/auth/IdentLoginModule.java +++ b/org.argeo.cms/src/org/argeo/cms/auth/IdentLoginModule.java @@ -9,24 +9,22 @@ import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.UnsupportedCallbackException; import javax.security.auth.login.LoginException; import javax.security.auth.spi.LoginModule; -import javax.servlet.http.HttpServletRequest; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; +import org.argeo.api.cms.CmsLog; +import org.argeo.cms.auth.ident.IdentClient; import org.argeo.cms.internal.kernel.Activator; -import org.argeo.ident.IdentClient; +/** Use an ident service to identify. */ public class IdentLoginModule implements LoginModule { - private final static Log log = LogFactory.getLog(IdentLoginModule.class); + private final static CmsLog log = CmsLog.getLog(IdentLoginModule.class); - private Subject subject = null; private CallbackHandler callbackHandler = null; private Map sharedState = null; + @SuppressWarnings("unchecked") @Override public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) { - this.subject = subject; this.callbackHandler = callbackHandler; this.sharedState = (Map) sharedState; } @@ -35,7 +33,7 @@ public class IdentLoginModule implements LoginModule { public boolean login() throws LoginException { if (callbackHandler == null) return false; - HttpRequestCallback httpCallback = new HttpRequestCallback(); + RemoteAuthCallback httpCallback = new RemoteAuthCallback(); try { callbackHandler.handle(new Callback[] { httpCallback }); } catch (IOException e) { @@ -43,7 +41,9 @@ public class IdentLoginModule implements LoginModule { } catch (UnsupportedCallbackException e) { return false; } - HttpServletRequest request = httpCallback.getRequest(); + RemoteAuthRequest request = httpCallback.getRequest(); + if (request == null) + return false; IdentClient identClient = Activator.getIdentClient(request.getRemoteAddr()); if (identClient == null) return false; @@ -56,7 +56,8 @@ public class IdentLoginModule implements LoginModule { } if (identUsername != null) { if (log.isDebugEnabled()) - log.debug("Ident username: " + identUsername); + log.debug("Ident username: " + identUsername + " (local port: " + request.getLocalPort() + + ", remote port: " + request.getRemotePort() + ")"); sharedState.put(CmsAuthUtils.SHARED_STATE_NAME, identUsername); sharedState.put(CmsAuthUtils.SHARED_STATE_REMOTE_ADDR, request.getRemoteAddr()); sharedState.put(CmsAuthUtils.SHARED_STATE_REMOTE_PORT, request.getRemotePort());