1 package org
.argeo
.cms
.auth
;
3 import java
.util
.Locale
;
6 import javax
.security
.auth
.Subject
;
7 import javax
.security
.auth
.callback
.CallbackHandler
;
8 import javax
.security
.auth
.login
.LoginException
;
9 import javax
.security
.auth
.spi
.LoginModule
;
10 import javax
.servlet
.http
.HttpServletRequest
;
12 import org
.apache
.commons
.logging
.Log
;
13 import org
.apache
.commons
.logging
.LogFactory
;
14 import org
.osgi
.framework
.BundleContext
;
15 import org
.osgi
.framework
.FrameworkUtil
;
16 import org
.osgi
.service
.useradmin
.Authorization
;
17 import org
.osgi
.service
.useradmin
.UserAdmin
;
19 /** Anonymous CMS user */
20 public class AnonymousLoginModule
implements LoginModule
{
21 private final static Log log
= LogFactory
.getLog(AnonymousLoginModule
.class);
23 private Subject subject
;
24 private Map
<String
, Object
> sharedState
= null;
27 private BundleContext bc
;
29 @SuppressWarnings("unchecked")
31 public void initialize(Subject subject
, CallbackHandler callbackHandler
, Map
<String
, ?
> sharedState
,
32 Map
<String
, ?
> options
) {
33 this.subject
= subject
;
34 this.sharedState
= (Map
<String
, Object
>) sharedState
;
36 bc
= FrameworkUtil
.getBundle(AnonymousLoginModule
.class).getBundleContext();
38 } catch (Exception e
) {
39 throw new IllegalStateException("Cannot initialize login module", e
);
44 public boolean login() throws LoginException
{
49 public boolean commit() throws LoginException
{
50 UserAdmin userAdmin
= bc
.getService(bc
.getServiceReference(UserAdmin
.class));
51 Authorization authorization
= userAdmin
.getAuthorization(null);
52 HttpServletRequest request
= (HttpServletRequest
) sharedState
.get(CmsAuthUtils
.SHARED_STATE_HTTP_REQUEST
);
53 Locale locale
= Locale
.getDefault();
55 locale
= request
.getLocale();
56 CmsAuthUtils
.addAuthorization(subject
, authorization
);
57 CmsAuthUtils
.registerSessionAuthorization(request
, subject
, authorization
, locale
);
58 if (log
.isTraceEnabled())
59 log
.trace("Anonymous logged in to CMS: " + subject
);
64 public boolean abort() throws LoginException
{
69 public boolean logout() throws LoginException
{
70 if (log
.isTraceEnabled())
71 log
.trace("Logging out anonymous from CMS... " + subject
);
72 CmsAuthUtils
.cleanUp(subject
);