1 package com.github.choonchernlim.security.adfs.saml2;
2
3 import static com.github.choonchernlim.betterPreconditions.preconditions.PreconditionFactory.expect;
4 import com.google.common.base.MoreObjects;
5 import com.google.common.base.Optional;
6 import com.google.common.collect.ImmutableSet;
7 import net.karneim.pojobuilder.GeneratePojoBuilder;
8 import org.opensaml.saml2.core.AuthnContext;
9 import org.springframework.core.io.Resource;
10 import org.springframework.security.saml.userdetails.SAMLUserDetailsService;
11
12 import java.util.Set;
13
14
15
16
17 public final class SAMLConfigBean {
18
19
20
21
22 private final String idpServerName;
23
24
25
26
27 private final String spServerName;
28
29
30
31
32
33
34 private final Integer spHttpsPort;
35
36
37
38
39
40
41 private final String spContextPath;
42
43
44
45
46 private final Resource keystoreResource;
47
48
49
50
51 private final String keystoreAlias;
52
53
54
55
56 private final String keystorePassword;
57
58
59
60
61 private final String keystorePrivateKeyPassword;
62
63
64
65
66 private final String successLoginDefaultUrl;
67
68
69
70
71 private final String successLogoutUrl;
72
73
74
75
76
77
78
79
80 private final String failedLoginDefaultUrl;
81
82
83
84
85
86
87 private final SAMLUserDetailsService samlUserDetailsService;
88
89
90
91
92
93
94 private final Boolean storeCsrfTokenInCookie;
95
96
97
98
99
100
101
102
103
104
105 private final Set<String> authnContexts;
106
107 @GeneratePojoBuilder
108 SAMLConfigBean(final String idpServerName,
109 final String spServerName,
110 final Integer spHttpsPort,
111 final String spContextPath,
112 final Resource keystoreResource,
113 final String keystoreAlias,
114 final String keystorePassword,
115 final String keystorePrivateKeyPassword,
116 final String successLoginDefaultUrl,
117 final String successLogoutUrl,
118 final String failedLoginDefaultUrl,
119 final Boolean storeCsrfTokenInCookie,
120 final SAMLUserDetailsService samlUserDetailsService,
121 final Set<String> authnContexts) {
122
123
124 this.idpServerName = expect(idpServerName, "IdP server name").not().toBeBlank().check();
125
126 this.spServerName = expect(spServerName, "Sp server name").not().toBeBlank().check();
127 this.spHttpsPort = Optional.fromNullable(spHttpsPort).or(443);
128 this.spContextPath = Optional.fromNullable(spContextPath).or("");
129
130 this.keystoreResource = (Resource) expect(keystoreResource, "Key store").not().toBeNull().check();
131 this.keystoreAlias = expect(keystoreAlias, "Keystore alias").not().toBeBlank().check();
132 this.keystorePassword = expect(keystorePassword, "Keystore password").not().toBeBlank().check();
133 this.keystorePrivateKeyPassword = expect(keystorePrivateKeyPassword, "Keystore private key password").not().toBeBlank().check();
134
135 this.successLoginDefaultUrl = expect(successLoginDefaultUrl, "Success login URL").not().toBeBlank().check();
136 this.successLogoutUrl = expect(successLogoutUrl, "Success logout URL").not().toBeBlank().check();
137 this.failedLoginDefaultUrl = Optional.fromNullable(failedLoginDefaultUrl).or("");
138
139 this.storeCsrfTokenInCookie = MoreObjects.firstNonNull(storeCsrfTokenInCookie, false);
140 this.samlUserDetailsService = samlUserDetailsService;
141
142 this.authnContexts = Optional.fromNullable(authnContexts).or(ImmutableSet.of(AuthnContext.PASSWORD_AUTHN_CTX));
143
144 }
145
146 public String getIdpServerName() {
147 return idpServerName;
148 }
149
150 public String getSpServerName() {
151 return spServerName;
152 }
153
154 public Integer getSpHttpsPort() {
155 return spHttpsPort;
156 }
157
158 public String getSpContextPath() {
159 return spContextPath;
160 }
161
162 public Resource getKeystoreResource() {
163 return keystoreResource;
164 }
165
166 public String getKeystoreAlias() {
167 return keystoreAlias;
168 }
169
170 public String getKeystorePassword() {
171 return keystorePassword;
172 }
173
174 public String getKeystorePrivateKeyPassword() {
175 return keystorePrivateKeyPassword;
176 }
177
178 public String getSuccessLoginDefaultUrl() {
179 return successLoginDefaultUrl;
180 }
181
182 public String getSuccessLogoutUrl() {
183 return successLogoutUrl;
184 }
185
186 public String getFailedLoginDefaultUrl() {
187 return failedLoginDefaultUrl;
188 }
189
190 public Boolean getStoreCsrfTokenInCookie() {
191 return storeCsrfTokenInCookie;
192 }
193
194 public SAMLUserDetailsService getSamlUserDetailsService() {
195 return samlUserDetailsService;
196 }
197
198 public Set<String> getAuthnContexts() {
199 return authnContexts;
200 }
201 }