Search in sources :

Example 1 with DistributableHostSingleSignOnManagerBuilder

use of org.wildfly.extension.undertow.security.sso.DistributableHostSingleSignOnManagerBuilder in project wildfly by wildfly.

the class HostSingleSignOnServiceHandler method installServices.

@Override
public void installServices(OperationContext context, ModelNode model) throws OperationFailedException {
    PathAddress address = context.getCurrentAddress();
    PathAddress hostAddress = address.getParent();
    PathAddress serverAddress = hostAddress.getParent();
    String hostName = hostAddress.getLastElement().getValue();
    String serverName = serverAddress.getLastElement().getValue();
    String domain = ModelNodes.optionalString(DOMAIN.resolveModelAttribute(context, model)).orElse(null);
    String path = PATH.resolveModelAttribute(context, model).asString();
    boolean secure = SECURE.resolveModelAttribute(context, model).asBoolean();
    boolean httpOnly = HTTP_ONLY.resolveModelAttribute(context, model).asBoolean();
    String cookieName = COOKIE_NAME.resolveModelAttribute(context, model).asString();
    ServiceName serviceName = UndertowService.ssoServiceName(serverName, hostName);
    ServiceName virtualHostServiceName = UndertowService.virtualHostName(serverName, hostName);
    ServiceTarget target = context.getServiceTarget();
    ServiceName managerServiceName = serviceName.append("manager");
    if (DistributableHostSingleSignOnManagerBuilder.INSTANCE.isPresent()) {
        DistributableHostSingleSignOnManagerBuilder builder = DistributableHostSingleSignOnManagerBuilder.INSTANCE.get();
        builder.build(target, managerServiceName, context.getCapabilityServiceSupport(), serverName, hostName).setInitialMode(ServiceController.Mode.ON_DEMAND).install();
    } else {
        target.addService(managerServiceName, new ValueService<>(new ImmediateValue<>(new InMemorySingleSignOnManager()))).setInitialMode(ServiceController.Mode.ON_DEMAND).install();
    }
    SingleSignOnService service = new SingleSignOnService(domain, path, httpOnly, secure, cookieName);
    target.addService(serviceName, service).addDependency(virtualHostServiceName, Host.class, service.getHost()).addDependency(managerServiceName, SingleSignOnManager.class, service.getSingleSignOnSessionManager()).setInitialMode(ServiceController.Mode.ACTIVE).install();
}
Also used : InMemorySingleSignOnManager(io.undertow.security.impl.InMemorySingleSignOnManager) ServiceName(org.jboss.msc.service.ServiceName) PathAddress(org.jboss.as.controller.PathAddress) ServiceTarget(org.jboss.msc.service.ServiceTarget) DistributableHostSingleSignOnManagerBuilder(org.wildfly.extension.undertow.security.sso.DistributableHostSingleSignOnManagerBuilder) ImmediateValue(org.jboss.msc.value.ImmediateValue)

Aggregations

InMemorySingleSignOnManager (io.undertow.security.impl.InMemorySingleSignOnManager)1 PathAddress (org.jboss.as.controller.PathAddress)1 ServiceName (org.jboss.msc.service.ServiceName)1 ServiceTarget (org.jboss.msc.service.ServiceTarget)1 ImmediateValue (org.jboss.msc.value.ImmediateValue)1 DistributableHostSingleSignOnManagerBuilder (org.wildfly.extension.undertow.security.sso.DistributableHostSingleSignOnManagerBuilder)1