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
;
11 import org
.apache
.commons
.logging
.Log
;
12 import org
.apache
.commons
.logging
.LogFactory
;
13 import org
.osgi
.framework
.BundleContext
;
14 import org
.osgi
.framework
.FrameworkUtil
;
15 import org
.osgi
.service
.useradmin
.Authorization
;
16 import org
.osgi
.service
.useradmin
.UserAdmin
;
18 /** Anonymous CMS user */
19 public class AnonymousLoginModule
implements LoginModule
{
20 private final static Log log
= LogFactory
.getLog(AnonymousLoginModule
.class);
22 private Subject subject
;
23 private Map
<String
, Object
> sharedState
= null;
26 private BundleContext bc
;
28 @SuppressWarnings("unchecked")
30 public void initialize(Subject subject
, CallbackHandler callbackHandler
, Map
<String
, ?
> sharedState
,
31 Map
<String
, ?
> options
) {
32 this.subject
= subject
;
33 this.sharedState
= (Map
<String
, Object
>) sharedState
;
35 bc
= FrameworkUtil
.getBundle(AnonymousLoginModule
.class).getBundleContext();
37 } catch (Exception e
) {
38 throw new IllegalStateException("Cannot initialize login module", e
);
43 public boolean login() throws LoginException
{
48 public boolean commit() throws LoginException
{
49 UserAdmin userAdmin
= bc
.getService(bc
.getServiceReference(UserAdmin
.class));
50 Authorization authorization
= userAdmin
.getAuthorization(null);
51 HttpRequest request
= (HttpRequest
) sharedState
.get(CmsAuthUtils
.SHARED_STATE_HTTP_REQUEST
);
52 Locale locale
= Locale
.getDefault();
54 locale
= request
.getLocale();
55 CmsAuthUtils
.addAuthorization(subject
, authorization
);
56 CmsAuthUtils
.registerSessionAuthorization(request
, subject
, authorization
, locale
);
57 if (log
.isTraceEnabled())
58 log
.trace("Anonymous logged in to CMS: " + subject
);
63 public boolean abort() throws LoginException
{
68 public boolean logout() throws LoginException
{
69 if (log
.isTraceEnabled())
70 log
.trace("Logging out anonymous from CMS... " + subject
);
71 CmsAuthUtils
.cleanUp(subject
);