Revision 47841 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.swing/org.gvsig.downloader.swing.scribejava/src/main/java/org/gvsig/downloader/swing/scribejava/keycloak/DownloaderAuthenticationKeycloakConfig.java
DownloaderAuthenticationKeycloakConfig.java | ||
---|---|---|
10 | 10 |
import org.apache.commons.lang3.StringUtils; |
11 | 11 |
import org.gvsig.downloader.DownloaderAuthenticationConfig; |
12 | 12 |
import org.gvsig.downloader.DownloaderCredentials; |
13 |
import org.gvsig.downloader.DownloaderLocator; |
|
14 | 13 |
import org.gvsig.downloader.DownloaderManager; |
15 | 14 |
import org.gvsig.downloader.spi.AbstractDownloaderAuthenticationConfig; |
16 | 15 |
import static org.gvsig.downloader.swing.scribejava.keycloak.DownloaderAuthenticationKeycloakFactory.AUTH_MODE_KEYCLOAK; |
16 |
import org.gvsig.json.Json; |
|
17 | 17 |
import org.gvsig.json.JsonObjectBuilder; |
18 | 18 |
import org.gvsig.tools.ToolsLocator; |
19 | 19 |
import org.gvsig.tools.dynobject.DynStruct; |
... | ... | |
33 | 33 |
*/ |
34 | 34 |
public class DownloaderAuthenticationKeycloakConfig |
35 | 35 |
extends AbstractDownloaderAuthenticationConfig |
36 |
implements DownloaderAuthenticationConfig, Persistent, LabeledValue<DownloaderAuthenticationConfig>
|
|
36 |
implements DownloaderAuthenticationConfig, LabeledValue<DownloaderAuthenticationConfig> |
|
37 | 37 |
{ |
38 | 38 |
|
39 | 39 |
private static final String DEFAULT_CLIENTID = "gvsigdesktop"; |
... | ... | |
44 | 44 |
|
45 | 45 |
private String clientid; |
46 | 46 |
private String realm; |
47 |
private String baseurl;
|
|
47 |
private String keycloakBaseurl;
|
|
48 | 48 |
private int localPort; |
49 | 49 |
private String scope; |
50 | 50 |
|
51 |
public DownloaderAuthenticationKeycloakConfig(DownloaderAuthenticationKeycloakFactory factory, String urlOnline) {
|
|
52 |
super(factory,urlOnline);
|
|
51 |
public DownloaderAuthenticationKeycloakConfig(DownloaderAuthenticationKeycloakFactory factory, String serviceUrl) {
|
|
52 |
super(AUTH_MODE_KEYCLOAK, factory,serviceUrl);
|
|
53 | 53 |
this.clientid = DEFAULT_CLIENTID; |
54 | 54 |
this.scope = DEFAULT_SCOPE; |
55 | 55 |
this.localPort = DEFAULT_LOCALPORT; |
56 | 56 |
this.realm = null; |
57 |
this.baseurl = null;
|
|
57 |
this.keycloakBaseurl = null;
|
|
58 | 58 |
} |
59 | 59 |
|
60 | 60 |
public DownloaderAuthenticationKeycloakConfig() { |
... | ... | |
74 | 74 |
builder.append("clientid=").append(this.clientid).append(";"); |
75 | 75 |
builder.append("scope=").append(this.scope).append(";"); |
76 | 76 |
builder.append("realm=").append(this.realm).append(";"); |
77 |
builder.append("baseurl=").append(this.baseurl).append(";");
|
|
77 |
builder.append("baseurl=").append(this.keycloakBaseurl).append(";");
|
|
78 | 78 |
return builder.toString(); |
79 | 79 |
} |
80 | 80 |
|
... | ... | |
82 | 82 |
return localPort; |
83 | 83 |
} |
84 | 84 |
|
85 |
public String getBaseurl() { |
|
86 |
return baseurl;
|
|
85 |
public String getKeycloakBaseurl() {
|
|
86 |
return keycloakBaseurl;
|
|
87 | 87 |
} |
88 | 88 |
|
89 | 89 |
public String getRealm() { |
... | ... | |
98 | 98 |
return scope; |
99 | 99 |
} |
100 | 100 |
|
101 |
public void setBaseurl(String baseurl) {
|
|
102 |
this.baseurl = baseurl;
|
|
101 |
public void setKeycloakBaseurl(String keycloakBaseurl) {
|
|
102 |
this.keycloakBaseurl = keycloakBaseurl;
|
|
103 | 103 |
} |
104 | 104 |
|
105 | 105 |
public void setLocalPort(int localPort) { |
... | ... | |
126 | 126 |
if( StringUtils.isBlank(realm) ) { |
127 | 127 |
return null; |
128 | 128 |
} |
129 |
if( StringUtils.isBlank(baseurl) ) {
|
|
129 |
if( StringUtils.isBlank(keycloakBaseurl) ) {
|
|
130 | 130 |
return null; |
131 | 131 |
} |
132 | 132 |
if( localPort<1024 ) { |
... | ... | |
162 | 162 |
|
163 | 163 |
@Override |
164 | 164 |
public void fromJson(JsonObject json) { |
165 |
DownloaderManager manager = DownloaderLocator.getDownloaderManager(); |
|
165 |
// DownloaderManager manager = DownloaderLocator.getDownloaderManager();
|
|
166 | 166 |
String type = json.getString("type", null); |
167 | 167 |
if( type!=null ) { |
168 | 168 |
if( !StringUtils.equalsIgnoreCase(type, "OAuth") ) { |
169 | 169 |
throw new IllegalArgumentException("Invalid value of type '"+type+"' for '"+AUTH_MODE_KEYCLOAK+"'."); |
170 | 170 |
} |
171 |
this.factory = manager.getDownloaderAuthenticationFactory(AUTH_MODE_KEYCLOAK); |
|
171 |
// this.factory = manager.getDownloaderAuthenticationFactory(AUTH_MODE_KEYCLOAK);
|
|
172 | 172 |
this.realm = json.getString("realm", null); |
173 |
this.baseurl = json.getString("url", null);
|
|
174 |
if( StringUtils.isNotBlank(this.baseurl) ) {
|
|
175 |
if( this.baseurl.endsWith("/") ) {
|
|
176 |
this.baseurl = this.baseurl+"realms";
|
|
173 |
this.keycloakBaseurl = json.getString("url", null);
|
|
174 |
if( StringUtils.isNotBlank(this.keycloakBaseurl) ) {
|
|
175 |
if( this.keycloakBaseurl.endsWith("/") ) {
|
|
176 |
this.keycloakBaseurl = this.keycloakBaseurl+"realms";
|
|
177 | 177 |
} else { |
178 |
this.baseurl = this.baseurl+"/realms";
|
|
178 |
this.keycloakBaseurl = this.keycloakBaseurl+"/realms";
|
|
179 | 179 |
} |
180 | 180 |
} |
181 | 181 |
} else { |
... | ... | |
183 | 183 |
this.clientid = json.getString("clientid", null); |
184 | 184 |
this.scope = json.getString("scope", null); |
185 | 185 |
this.realm = json.getString("realm", null); |
186 |
this.baseurl = json.getString("baseurl", null);
|
|
186 |
this.keycloakBaseurl = json.getString("baseurl", null);
|
|
187 | 187 |
this.localPort = json.getInt("localPort", 0); |
188 | 188 |
} |
189 | 189 |
} |
... | ... | |
191 | 191 |
@Override |
192 | 192 |
public JsonObjectBuilder toJsonBuilder() { |
193 | 193 |
JsonObjectBuilder builder = super.toJsonBuilder(); |
194 |
builder.add_class(this); |
|
194 | 195 |
builder.add("clientid", this.clientid); |
195 | 196 |
builder.add("scope", this.scope); |
196 | 197 |
builder.add("realm", this.realm); |
197 |
builder.add("baseurl", this.baseurl);
|
|
198 |
builder.add("baseurl", this.keycloakBaseurl);
|
|
198 | 199 |
builder.add("localPort", this.localPort); |
199 | 200 |
return builder; |
200 | 201 |
} |
201 | 202 |
|
202 | 203 |
@Override |
203 | 204 |
public void saveToState(PersistentState state) throws PersistenceException { |
204 |
state.set("factory",this.factory.getProviderName());
|
|
205 |
super.saveToState(state);
|
|
205 | 206 |
state.set("clientid",this.clientid); |
206 | 207 |
state.set("scope",this.scope); |
207 |
// state.set("urlOnline",this.urlOnline); |
|
208 |
state.set("baseurl",this.baseurl); |
|
208 |
state.set("baseurl",this.keycloakBaseurl); |
|
209 | 209 |
state.set("realm",this.realm); |
210 | 210 |
state.set("localPort",this.localPort); |
211 | 211 |
} |
212 | 212 |
|
213 | 213 |
@Override |
214 | 214 |
public void loadFromState(PersistentState state) throws PersistenceException { |
215 |
String factoryName = state.getString("factory"); |
|
216 |
this.factory = DownloaderLocator.getDownloaderManager().getDownloaderAuthenticationFactory(factoryName); |
|
215 |
super.loadFromState(state); |
|
217 | 216 |
this.clientid = state.getString("clientid"); |
218 | 217 |
this.scope = state.getString("scope"); |
219 |
// this.urlOnline = state.getString("urlOnline"); |
|
220 |
this.baseurl = state.getString("baseurl"); |
|
218 |
this.keycloakBaseurl = state.getString("baseurl"); |
|
221 | 219 |
this.realm = state.getString("realm"); |
222 | 220 |
this.localPort = state.getInt("localPort"); |
223 | 221 |
} |
... | ... | |
227 | 225 |
if (manager.getDefinition(PERSISTENT_DEFINITION_NAME) == null) { |
228 | 226 |
DynStruct definition = manager.addDefinition(DownloaderAuthenticationKeycloakConfig.class, |
229 | 227 |
PERSISTENT_DEFINITION_NAME, |
230 |
"UserIdentificationKeycloakConfig persistence definition", null, null |
|
231 |
); |
|
232 |
definition.addDynFieldString("factory"); |
|
228 |
"DownloaderAuthenticationKeycloakConfig persistence definition", null, null |
|
229 |
); |
|
230 |
definition.extend( |
|
231 |
PersistenceManager.PERSISTENCE_NAMESPACE, |
|
232 |
DownloaderAuthenticationConfig.PERSISTENT_DEFINITION_NAME |
|
233 |
); |
|
233 | 234 |
definition.addDynFieldString("clientid"); |
234 | 235 |
definition.addDynFieldString("scope"); |
235 |
// definition.addDynFieldString("urlOnline"); |
|
236 | 236 |
definition.addDynFieldString("baseurl"); |
237 | 237 |
definition.addDynFieldString("realm"); |
238 | 238 |
definition.addDynFieldInt("localPort"); |
239 | 239 |
} |
240 |
Json.registerSerializer(DownloaderAuthenticationKeycloakConfig.class); |
|
240 | 241 |
} |
241 | 242 |
|
242 | 243 |
@Override |
243 | 244 |
public String getLabel() { |
244 |
return String.format("%s - %s", this.baseurl, this.realm);
|
|
245 |
return String.format("%s - %s", this.keycloakBaseurl, this.realm);
|
|
245 | 246 |
} |
246 | 247 |
|
247 | 248 |
@Override |
... | ... | |
251 | 252 |
|
252 | 253 |
@Override |
253 | 254 |
public String toString() { |
254 |
return String.format( |
|
255 |
// "Factory: %s\ngvSIG online URL: %s\nKeycloak URL:%s\nRealm: %s\nLocal port:%d", |
|
255 |
return String.format(// "Factory: %s\ngvSIG online URL: %s\nKeycloak URL:%s\nRealm: %s\nLocal port:%d", |
|
256 | 256 |
"Factory: %s\nKeycloak URL:%s\nRealm: %s\nLocal port:%d", |
257 | 257 |
this.getFactory().getProviderName(), |
258 | 258 |
// this.getUrlOnline(), |
259 |
this.getBaseurl(),
|
|
259 |
this.getKeycloakBaseurl(),
|
|
260 | 260 |
this.getRealm(), |
261 | 261 |
this.getLocalPort() |
262 | 262 |
); |
... | ... | |
270 | 270 |
DownloaderKeycloakCredentials theCredentials = (DownloaderKeycloakCredentials)credentials; |
271 | 271 |
DownloaderAuthenticationKeycloakConfig otherConfig = theCredentials.getConfig(); |
272 | 272 |
|
273 |
if (!DownloaderManager.areSameURLs(this.getBaseurl(), otherConfig.getBaseurl())) {
|
|
273 |
if (!DownloaderManager.areSameURLs(this.getKeycloakBaseurl(), otherConfig.getKeycloakBaseurl())) {
|
|
274 | 274 |
return null; |
275 | 275 |
} |
276 | 276 |
if (!StringUtils.equals(this.getRealm(), otherConfig.getRealm())) { |
Also available in: Unified diff