gvsig-projects-pool / org.gvsig.online / trunk / org.gvsig.online / org.gvsig.online.swing / org.gvsig.online.swing.scribejava / src / main / java / org / gvsig / online / swing / scribejava / keycloak / UserIdentificationKeycloakFactory.java @ 9514
History | View | Annotate | Download (2.2 KB)
1 |
package org.gvsig.online.swing.scribejava.keycloak; |
---|---|
2 |
|
3 |
import com.sun.net.httpserver.HttpExchange; |
4 |
import com.sun.net.httpserver.HttpHandler; |
5 |
import com.sun.net.httpserver.HttpServer; |
6 |
import java.io.IOException; |
7 |
import java.io.OutputStream; |
8 |
import java.net.InetSocketAddress; |
9 |
import org.gvsig.online.lib.api.OnlineLocator; |
10 |
import org.gvsig.online.lib.api.OnlineManager; |
11 |
import org.gvsig.online.lib.api.OnlineUserIdentificationRequester.OnlineUserIdentificationRequesterFactory; |
12 |
|
13 |
/**
|
14 |
*
|
15 |
* @author jjdelcerro
|
16 |
*/
|
17 |
public class UserIdentificationKeycloakFactory implements OnlineUserIdentificationRequesterFactory { |
18 |
|
19 |
public static final String AUTH_MODE_KEYCLOAK = "Keycloak"; |
20 |
|
21 |
private HttpServer httpserver;
|
22 |
|
23 |
public UserIdentificationKeycloakFactory() {
|
24 |
|
25 |
} |
26 |
|
27 |
@Override
|
28 |
public String getName() { |
29 |
return AUTH_MODE_KEYCLOAK;
|
30 |
} |
31 |
|
32 |
@Override
|
33 |
public UserIdentificationKeycloakConfig create(Object... parameters) { |
34 |
return new UserIdentificationKeycloakConfig(this, (String) parameters[0]); |
35 |
} |
36 |
|
37 |
public HttpServer getHttpServer(UserIdentificationKeycloakConfig config) throws IOException { |
38 |
if( this.httpserver == null ) { |
39 |
this.httpserver = HttpServer.create(new InetSocketAddress(config.getLocalPort()), 0); |
40 |
this.httpserver.setExecutor(null); // creates a default executor |
41 |
this.httpserver.start();
|
42 |
} |
43 |
return this.httpserver; |
44 |
} |
45 |
|
46 |
public void stopHttpServer(int delay) { |
47 |
if( this.httpserver!=null ) { |
48 |
this.httpserver.stop(0); |
49 |
} |
50 |
} |
51 |
|
52 |
public void addCallback(UserIdentificationKeycloakConfig config, String contextPath, HttpHandler handler ) throws IOException { |
53 |
this.getHttpServer(config).createContext(contextPath, handler);
|
54 |
} |
55 |
|
56 |
public void removeCallback(UserIdentificationKeycloakConfig config, String contextPath) throws IOException { |
57 |
this.getHttpServer(config).removeContext(contextPath);
|
58 |
} |
59 |
|
60 |
public static void selfRegister() { |
61 |
UserIdentificationKeycloakConfig.selfRegister(); |
62 |
|
63 |
OnlineManager manager = OnlineLocator.getOnlineManager(); |
64 |
manager.addUserIdentificationRequester(new UserIdentificationKeycloakFactory());
|
65 |
} |
66 |
} |