1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package waffle.spring;
25
26 import java.util.ArrayList;
27 import java.util.Collection;
28
29 import org.springframework.security.core.Authentication;
30 import org.springframework.security.core.GrantedAuthority;
31 import org.springframework.security.core.authority.SimpleGrantedAuthority;
32
33 import waffle.servlet.WindowsPrincipal;
34 import waffle.windows.auth.WindowsAccount;
35
36
37
38
39 public class WindowsAuthenticationToken implements Authentication {
40
41
42 private static final long serialVersionUID = 1L;
43
44
45
46
47
48
49 public static final GrantedAuthorityFactory DEFAULT_GRANTED_AUTHORITY_FACTORY = new FqnGrantedAuthorityFactory(
50 "ROLE_", true);
51
52
53
54
55
56 public static final GrantedAuthority DEFAULT_GRANTED_AUTHORITY = new SimpleGrantedAuthority("ROLE_USER");
57
58
59 private final WindowsPrincipal principal;
60
61
62 private final Collection<GrantedAuthority> authorities;
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 public WindowsAuthenticationToken(final WindowsPrincipal identity) {
78 this(identity, WindowsAuthenticationToken.DEFAULT_GRANTED_AUTHORITY_FACTORY,
79 WindowsAuthenticationToken.DEFAULT_GRANTED_AUTHORITY);
80 }
81
82
83
84
85
86
87
88
89
90
91
92
93 public WindowsAuthenticationToken(final WindowsPrincipal identity,
94 final GrantedAuthorityFactory grantedAuthorityFactory, final GrantedAuthority defaultGrantedAuthority) {
95
96 this.principal = identity;
97 this.authorities = new ArrayList<>();
98 if (defaultGrantedAuthority != null) {
99 this.authorities.add(defaultGrantedAuthority);
100 }
101 for (final WindowsAccount group : this.principal.getGroups().values()) {
102 this.authorities.add(grantedAuthorityFactory.createGrantedAuthority(group));
103 }
104 }
105
106 @Override
107 public Collection<GrantedAuthority> getAuthorities() {
108 return this.authorities;
109 }
110
111 @Override
112 public Object getCredentials() {
113 return null;
114 }
115
116 @Override
117 public Object getDetails() {
118 return null;
119 }
120
121 @Override
122 public Object getPrincipal() {
123 return this.principal;
124 }
125
126 @Override
127 public boolean isAuthenticated() {
128 return this.principal != null;
129 }
130
131 @Override
132 public void setAuthenticated(final boolean authenticated) {
133 throw new IllegalArgumentException();
134 }
135
136 @Override
137 public String getName() {
138 return this.principal.getName();
139 }
140
141 }