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
.argeo
.cms
.internal
.runtime
.CmsContextImpl
;
13 import org
.osgi
.service
.useradmin
.Authorization
;
14 import org
.osgi
.service
.useradmin
.UserAdmin
;
16 /** Anonymous CMS user */
17 public class AnonymousLoginModule
implements LoginModule
{
18 private final static CmsLog log
= CmsLog
.getLog(AnonymousLoginModule
.class);
20 private Subject subject
;
21 private Map
<String
, Object
> sharedState
= null;
24 // private BundleContext bc;
26 @SuppressWarnings("unchecked")
28 public void initialize(Subject subject
, CallbackHandler callbackHandler
, Map
<String
, ?
> sharedState
,
29 Map
<String
, ?
> options
) {
30 this.subject
= subject
;
31 this.sharedState
= (Map
<String
, Object
>) sharedState
;
33 // bc = FrameworkUtil.getBundle(AnonymousLoginModule.class).getBundleContext();
35 // } catch (Exception e) {
36 // throw new IllegalStateException("Cannot initialize login module", e);
41 public boolean login() throws LoginException
{
46 public boolean commit() throws LoginException
{
47 UserAdmin userAdmin
= CmsContextImpl
.getCmsContext().getUserAdmin();
48 Authorization authorization
= userAdmin
.getAuthorization(null);
49 RemoteAuthRequest request
= (RemoteAuthRequest
) sharedState
.get(CmsAuthUtils
.SHARED_STATE_HTTP_REQUEST
);
50 Locale locale
= Locale
.getDefault();
52 locale
= request
.getLocale();
53 CmsAuthUtils
.addAuthorization(subject
, authorization
);
54 CmsAuthUtils
.registerSessionAuthorization(request
, subject
, authorization
, locale
);
55 if (log
.isTraceEnabled())
56 log
.trace("Anonymous logged in to CMS: " + subject
);
61 public boolean abort() throws LoginException
{
66 public boolean logout() throws LoginException
{
67 if (log
.isTraceEnabled())
68 log
.trace("Logging out anonymous from CMS... " + subject
);
69 CmsAuthUtils
.cleanUp(subject
);