]> git.argeo.org Git - lgpl/argeo-commons.git/blob - AbstractSystemExecution.java
81eeadf21b146f42d628aeff841c64ba2128d639
[lgpl/argeo-commons.git] / AbstractSystemExecution.java
1 /*
2 * Copyright (C) 2007-2012 Argeo GmbH
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.argeo.security.core;
17
18 import javax.security.auth.Subject;
19 import javax.security.auth.login.LoginContext;
20 import javax.security.auth.login.LoginException;
21
22 import org.apache.commons.logging.Log;
23 import org.apache.commons.logging.LogFactory;
24 import org.argeo.ArgeoException;
25
26 /** Provides base method for executing code with system authorization. */
27 public abstract class AbstractSystemExecution {
28 private final static Log log = LogFactory
29 .getLog(AbstractSystemExecution.class);
30 private final Subject subject = new Subject();
31
32 private final String loginModule = "SYSTEM";
33
34 /**
35 * Authenticate the calling thread to the underlying
36 * {@link AuthenticationManager}
37 */
38 protected void authenticateAsSystem() {
39 try {
40 LoginContext lc = new LoginContext(loginModule, subject);
41 lc.login();
42 } catch (LoginException e) {
43 throw new ArgeoException("Cannot login as system", e);
44 }
45 if (log.isTraceEnabled())
46 log.trace("System authenticated");
47 }
48
49 protected void deauthenticateAsSystem() {
50 try {
51 LoginContext lc = new LoginContext(loginModule, subject);
52 lc.logout();
53 } catch (LoginException e) {
54 throw new ArgeoException("Cannot logout as system", e);
55 }
56 }
57
58 protected Subject getSubject() {
59 return subject;
60 }
61 }