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
.argeo
.api
.cms
.CmsLog
;
12 import org
.osgi
.framework
.BundleContext
;
13 import org
.osgi
.framework
.FrameworkUtil
;
14 import org
.osgi
.service
.useradmin
.Authorization
;
15 import org
.osgi
.service
.useradmin
.UserAdmin
;
17 /** Anonymous CMS user */
18 public class AnonymousLoginModule
implements LoginModule
{
19 private final static CmsLog log
= CmsLog
.getLog(AnonymousLoginModule
.class);
21 private Subject subject
;
22 private Map
<String
, Object
> sharedState
= null;
25 private BundleContext bc
;
27 @SuppressWarnings("unchecked")
29 public void initialize(Subject subject
, CallbackHandler callbackHandler
, Map
<String
, ?
> sharedState
,
30 Map
<String
, ?
> options
) {
31 this.subject
= subject
;
32 this.sharedState
= (Map
<String
, Object
>) sharedState
;
34 bc
= FrameworkUtil
.getBundle(AnonymousLoginModule
.class).getBundleContext();
36 } catch (Exception e
) {
37 throw new IllegalStateException("Cannot initialize login module", e
);
42 public boolean login() throws LoginException
{
47 public boolean commit() throws LoginException
{
48 UserAdmin userAdmin
= bc
.getService(bc
.getServiceReference(UserAdmin
.class));
49 Authorization authorization
= userAdmin
.getAuthorization(null);
50 RemoteAuthRequest request
= (RemoteAuthRequest
) sharedState
.get(CmsAuthUtils
.SHARED_STATE_HTTP_REQUEST
);
51 Locale locale
= Locale
.getDefault();
53 locale
= request
.getLocale();
54 CmsAuthUtils
.addAuthorization(subject
, authorization
);
55 CmsAuthUtils
.registerSessionAuthorization(request
, subject
, authorization
, locale
);
56 if (log
.isTraceEnabled())
57 log
.trace("Anonymous logged in to CMS: " + subject
);
62 public boolean abort() throws LoginException
{
67 public boolean logout() throws LoginException
{
68 if (log
.isTraceEnabled())
69 log
.trace("Logging out anonymous from CMS... " + subject
);
70 CmsAuthUtils
.cleanUp(subject
);