public void process()

in fractions/javaee/undertow/src/main/java/org/wildfly/swarm/undertow/runtime/HttpSecurityPreparer.java [54:122]


    public void process() {

        if (deploymentConfigs == null || deploymentConfigs.isEmpty()) {
            return;
        }

        // find a matching archive declaration
        Optional<String> match = deploymentConfigs.keySet()
                .stream()
                .filter(c -> archive.getName().equals(c))
                .findFirst();
        if (!match.isPresent()) {
            return; // no matching archive
        }

        Map<String, Object> matchingConfig = (Map<String, Object>) deploymentConfigs.get(match.get());
        if (!matchingConfig.containsKey("web")) {
            return; // missing web configuration
        }

        Map<String, Object> deploymentConfig = (Map<String, Object>) matchingConfig.get("web");

        WARArchive war = archive.as(WARArchive.class);
        WebXmlAsset webXml = war.findWebXmlAsset();
        JBossWebAsset jbossWeb = war.findJbossWebAsset();

        // login-config
        Map<String, Object> loginConfig = (Map<String, Object>) deploymentConfig.get("login-config");
        if (loginConfig != null) {
            String authMethod = (String) loginConfig.getOrDefault("auth-method", "NONE");

            // Setup login-config
            webXml.setLoginConfig(authMethod, (String) loginConfig.getOrDefault("realm-name", "ignored"));

            // security domain
            if (loginConfig.containsKey("security-domain")) {
                jbossWeb.setSecurityDomain((String) loginConfig.get("security-domain"));
            }

            // form login
            if (loginConfig.containsKey("form-login-config")) {
                Map<String, Object> formLoginConfig = (Map<String, Object>) loginConfig.get("form-login-config");
                webXml.setFormLoginConfig(
                        "Security Realm",
                        (String) formLoginConfig.get("form-login-page"),
                        (String) formLoginConfig.get("form-error-page")
                );
            }
        }

        // security constraints
        List<Map<String, Object>> securityConstraints =
                (List<Map<String, Object>>) deploymentConfig.getOrDefault("security-constraints", Collections.EMPTY_LIST);

        for (Map<String, Object> sc : securityConstraints) {
            SecurityConstraint securityConstraint = webXml
                    .protect((String) sc.getOrDefault("url-pattern", "/*"));

            ((List<String>) sc.getOrDefault("methods", Collections.emptyList()))
                    .forEach(securityConstraint::withMethod);

            List<String> roles = (List<String>) sc.get("roles");
            if (roles != null) {
              securityConstraint.withRole(roles.toArray(new String[roles.size()]));
            } else {
              securityConstraint.permitAll();
            }
        }
    }