import javax.security.auth.callback.CallbackHandler;
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.cms.CmsException;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
+import org.argeo.api.cms.CmsLog;
+import org.argeo.cms.internal.runtime.CmsContextImpl;
import org.osgi.service.useradmin.Authorization;
import org.osgi.service.useradmin.UserAdmin;
/** Anonymous CMS user */
public class AnonymousLoginModule implements LoginModule {
- private final static Log log = LogFactory.getLog(AnonymousLoginModule.class);
+ private final static CmsLog log = CmsLog.getLog(AnonymousLoginModule.class);
private Subject subject;
private Map<String, Object> sharedState = null;
// private state
- private BundleContext bc;
+// private BundleContext bc;
@SuppressWarnings("unchecked")
@Override
Map<String, ?> options) {
this.subject = subject;
this.sharedState = (Map<String, Object>) sharedState;
- try {
- bc = FrameworkUtil.getBundle(AnonymousLoginModule.class).getBundleContext();
- assert bc != null;
- } catch (Exception e) {
- throw new CmsException("Cannot initialize login module", e);
- }
+// try {
+// bc = FrameworkUtil.getBundle(AnonymousLoginModule.class).getBundleContext();
+// assert bc != null;
+// } catch (Exception e) {
+// throw new IllegalStateException("Cannot initialize login module", e);
+// }
}
@Override
@Override
public boolean commit() throws LoginException {
- UserAdmin userAdmin = bc.getService(bc.getServiceReference(UserAdmin.class));
+ UserAdmin userAdmin = CmsContextImpl.getCmsContext().getUserAdmin();
Authorization authorization = userAdmin.getAuthorization(null);
- HttpServletRequest request = (HttpServletRequest) sharedState.get(CmsAuthUtils.SHARED_STATE_HTTP_REQUEST);
+ RemoteAuthRequest request = (RemoteAuthRequest) sharedState.get(CmsAuthUtils.SHARED_STATE_HTTP_REQUEST);
Locale locale = Locale.getDefault();
if (request != null)
locale = request.getLocale();
- CmsAuthUtils.addAuthorization(subject, authorization, locale, request);
+ CmsAuthUtils.addAuthorization(subject, authorization);
+ CmsAuthUtils.registerSessionAuthorization(request, subject, authorization, locale);
if (log.isTraceEnabled())
log.trace("Anonymous logged in to CMS: " + subject);
return true;
@Override
public boolean abort() throws LoginException {
- // authorization = null;
return true;
}