1 package org
.argeo
.cms
.osgi
.useradmin
;
3 import java
.net
.URISyntaxException
;
5 import java
.security
.NoSuchAlgorithmException
;
6 import java
.security
.URIParameter
;
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
;
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";
18 public static String
getOsUsername() {
19 return System
.getProperty("user.name");
22 public static LoginContext
loginAsSystemUser(Subject subject
) {
24 URL jaasConfigurationUrl
= OsUserUtils
.class.getClassLoader()
25 .getResource("org/argeo/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
);
32 } catch (URISyntaxException
| NoSuchAlgorithmException
| LoginException e
) {
33 throw new RuntimeException("Cannot login as system user", e
);
37 public static void main(String args
[]) {
38 Subject subject
= new Subject();
39 LoginContext loginContext
= loginAsSystemUser(subject
);
40 System
.out
.println(subject
);
42 loginContext
.logout();
43 } catch (LoginException e
) {
48 private static boolean isWindows() {
49 return System
.getProperty("os.name").startsWith("Windows");
52 private OsUserUtils() {