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