Statistics
| Revision:

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
}