1
2
3
4
5
6
7
8
9
10
11
12
13
14 package waffle.windows.auth.impl;
15
16 import com.sun.jna.platform.win32.Advapi32;
17 import com.sun.jna.platform.win32.Kernel32;
18 import com.sun.jna.platform.win32.Win32Exception;
19 import com.sun.jna.platform.win32.WinNT.HANDLE;
20
21 import waffle.windows.auth.IWindowsImpersonationContext;
22
23
24
25
26
27
28 public class WindowsIdentityImpersonationContextImpl implements IWindowsImpersonationContext {
29
30
31
32
33
34
35
36 public WindowsIdentityImpersonationContextImpl(final HANDLE windowsIdentity) {
37 if (!Advapi32.INSTANCE.ImpersonateLoggedOnUser(windowsIdentity)) {
38 throw new Win32Exception(Kernel32.INSTANCE.GetLastError());
39 }
40 }
41
42
43
44
45 @Override
46 public void revertToSelf() {
47 Advapi32.INSTANCE.RevertToSelf();
48 }
49 }