]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/osgi/useradmin/OsUserUtils.java
Improve ACR attribute typing.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / osgi / useradmin / OsUserUtils.java
1 package org.argeo.cms.osgi.useradmin;
2
3 import java.net.URISyntaxException;
4 import java.net.URL;
5 import java.security.NoSuchAlgorithmException;
6 import java.security.URIParameter;
7
8 import javax.security.auth.Subject;
9 import javax.security.auth.login.Configuration;
10 import javax.security.auth.login.LoginContext;
11 import javax.security.auth.login.LoginException;
12
13 /** Log in based on JDK-provided OS integration. */
14 public class OsUserUtils {
15 private final static String LOGIN_CONTEXT_USER_NIX = "USER_NIX";
16 private final static String LOGIN_CONTEXT_USER_NT = "USER_NT";
17
18 public static String getOsUsername() {
19 return System.getProperty("user.name");
20 }
21
22 public static LoginContext loginAsSystemUser(Subject subject) {
23 try {
24 URL jaasConfigurationUrl = OsUserUtils.class.getClassLoader()
25 .getResource("org/argeo/cms/osgi/useradmin/jaas-os.cfg");
26 URIParameter uriParameter = new URIParameter(jaasConfigurationUrl.toURI());
27 Configuration jaasConfiguration = Configuration.getInstance("JavaLoginConfig", uriParameter);
28 LoginContext lc = new LoginContext(isWindows() ? LOGIN_CONTEXT_USER_NT : LOGIN_CONTEXT_USER_NIX, subject,
29 null, jaasConfiguration);
30 lc.login();
31 return lc;
32 } catch (URISyntaxException | NoSuchAlgorithmException | LoginException e) {
33 throw new RuntimeException("Cannot login as system user", e);
34 }
35 }
36
37 public static void main(String args[]) {
38 Subject subject = new Subject();
39 LoginContext loginContext = loginAsSystemUser(subject);
40 System.out.println(subject);
41 try {
42 loginContext.logout();
43 } catch (LoginException e) {
44 // silent
45 }
46 }
47
48 private static boolean isWindows() {
49 return System.getProperty("os.name").startsWith("Windows");
50 }
51
52 private OsUserUtils() {
53 }
54 }