All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.paranora.ssoc.configuration.DefaultRestStatelessShiroConfigurer Maven / Gradle / Ivy

package org.paranora.ssoc.configuration;

import org.pac4j.core.engine.SecurityLogic;
import org.paranora.ssoc.pac4j.client.BasicCasRestFormClient;
import org.paranora.ssoc.pac4j.client.BasicHeaderClient;
import org.paranora.ssoc.pac4j.engine.BasicRestStatelessSecurityLogic;
import org.paranora.ssoc.pac4j.filter.BasicSecurityFilter;
import org.paranora.ssoc.pac4j.profile.BasicJwtGenerator;
import org.paranora.ssoc.shiro.filter.BasicAnonymousFilter;
import org.paranora.ssoc.shiro.filter.BasicRestStatelessLoginFilter;
import org.paranora.ssoc.shiro.filter.BasicRestStatelessRefreshFilter;
import org.paranora.ssoc.shiro.property.ShiroConfigurationProperties;
import org.paranora.ssoc.shiro.realm.BasicRestStatelessLoginRealm;
import org.paranora.ssoc.shiro.realm.BasicRestStatelessRefreshRealm;
import org.apache.shiro.realm.Realm;
import org.pac4j.core.client.Client;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.client.RestTemplate;

import javax.servlet.Filter;
import java.util.HashMap;
import java.util.Map;


/**
 * The type Default rest stateless shiro configurer.
 *
 * @param  the type parameter
 */
public abstract class DefaultRestStatelessShiroConfigurer extends DefaultShiroConfigurer {

    /**
     * The Shiro config.
     */
    @Autowired
    protected ShiroConfigurationProperties shiroConfig;

    /**
     * The Rest template.
     */
    @Autowired(required = false)
    protected RestTemplate restTemplate;

    @Override
    public void configure(T config) {
        config.setConfig(shiroConfig);
        config.setRestOperations(restTemplate);
        super.configure(config);
    }

    @Override
    protected Filter defaultSecurityFilter(T config) {
        String clientNames= generateClientNames(config);
        BasicSecurityFilter securityFilter = new BasicSecurityFilter();
        securityFilter.setSecurityLogic(defaultSecurityLogic());
        securityFilter.setClients(clientNames);
        securityFilter.setConfig(config.getCasConfig());
        return securityFilter;
    }

    @Override
    protected SecurityLogic defaultSecurityLogic() {
        return new BasicRestStatelessSecurityLogic();
    }

    @Override
    protected Map generateDefaultShiroFilters(T config) {
        Map filters = new HashMap();
        Filter securityFilter = defaultSecurityFilter(config);
        filters.put("default", securityFilter);
        BasicAnonymousFilter anonymousFilter = new BasicAnonymousFilter();
        filters.put("none", anonymousFilter);
        return filters;
    }

    @Override
    protected Map generateCustomShiroFilters(T config) {
        Map filters = new HashMap();
        BasicRestStatelessLoginFilter restLoginFilter = new BasicRestStatelessLoginFilter();
        filters.put("restJwtLogin", restLoginFilter);

        BasicRestStatelessRefreshFilter restRefreshFilter=new BasicRestStatelessRefreshFilter();
        filters.put("restJwtRefresh", restRefreshFilter);
        return filters;
    }

    @Override
    protected Map generateDefaultClient(T config) {
        Map clients = new HashMap<>();
//        BasicCasRestFormClient casRestFormClient = config.getCasRestFormClient();
//        clients.put("casRestFormClient", casRestFormClient);

        BasicHeaderClient headerClient = generateHeaderClient(config);
        clients.put("headerClient", headerClient);
        return clients;
    }

    @Override
    protected Map generateDefaultRealms(T config) {
        return super.generateDefaultRealms(config);
    }

    @Override
    protected Map generateCustomRealms(T config) {
        Map realms = new HashMap<>();

        BasicCasRestFormClient casRestFormClient = config.getCasRestFormClient();
        BasicJwtGenerator jwtGenerator = config.getJwtGenerator();
        BasicRestStatelessLoginRealm restLoginRealm = new BasicRestStatelessLoginRealm();
        restLoginRealm.setCasRestFormClient(casRestFormClient);
        restLoginRealm.setJwtGenerator(jwtGenerator);
        realms.put("restLoginRealm",restLoginRealm);

        BasicRestStatelessRefreshRealm restRefreshRealm=new BasicRestStatelessRefreshRealm();
        restRefreshRealm.setJwtGenerator(jwtGenerator);
        restRefreshRealm.setJwtAuthenticator(config.getJwtAuthenticator());
        realms.put("restRefreshRealm",restRefreshRealm);
        return realms;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy