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

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

package org.paranora.ssoc.configuration;

import org.apache.shiro.mgt.SubjectFactory;
import org.apache.shiro.realm.Realm;
import org.apache.shiro.session.mgt.SessionFactory;
import org.apache.shiro.session.mgt.SessionManager;
import org.apache.shiro.session.mgt.eis.SessionDAO;
import org.apache.shiro.session.mgt.eis.SessionIdGenerator;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.apache.shiro.web.servlet.SimpleCookie;
import org.apache.shiro.web.session.mgt.WebSessionManager;
import org.pac4j.core.context.session.SessionStore;
import org.springframework.data.redis.connection.RedisConnectionFactory;

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

/**
 * The type Default web shiro config.
 */
public abstract class DefaultWebShiroConfig extends ShiroConfig {

    /**
     * The Session store.
     */
    protected SessionStore sessionStore;
    /**
     * The Session id generator.
     */
    protected SessionIdGenerator sessionIdGenerator;
    /**
     * The Subject factory.
     */
    protected SubjectFactory subjectFactory;
    /**
     * The Session id cookie.
     */
    protected SimpleCookie sessionIdCookie;
    /**
     * The Session dao.
     */
    protected SessionDAO sessionDAO;
    /**
     * The Session factory.
     */
    protected SessionFactory sessionFactory;
    /**
     * The Session manager.
     */
    protected WebSessionManager sessionManager;
    /**
     * The Redis connection factory.
     */
    protected RedisConnectionFactory redisConnectionFactory;

    /**
     * Gets session store.
     *
     * @return the session store
     */
    public SessionStore getSessionStore() {
        return sessionStore;
    }

    /**
     * Sets session store.
     *
     * @param sessionStore the session store
     */
    public void setSessionStore(SessionStore sessionStore) {
        this.sessionStore = sessionStore;
    }

    /**
     * Gets session id generator.
     *
     * @return the session id generator
     */
    public SessionIdGenerator getSessionIdGenerator() {
        return sessionIdGenerator;
    }

    /**
     * Sets session id generator.
     *
     * @param sessionIdGenerator the session id generator
     */
    public void setSessionIdGenerator(SessionIdGenerator sessionIdGenerator) {
        this.sessionIdGenerator = sessionIdGenerator;
    }

    /**
     * Gets subject factory.
     *
     * @return the subject factory
     */
    public SubjectFactory getSubjectFactory() {
        return subjectFactory;
    }

    /**
     * Sets subject factory.
     *
     * @param subjectFactory the subject factory
     */
    public void setSubjectFactory(SubjectFactory subjectFactory) {
        this.subjectFactory = subjectFactory;
    }

    /**
     * Gets session id cookie.
     *
     * @return the session id cookie
     */
    public SimpleCookie getSessionIdCookie() {
        return sessionIdCookie;
    }

    /**
     * Sets session id cookie.
     *
     * @param sessionIdCookie the session id cookie
     */
    public void setSessionIdCookie(SimpleCookie sessionIdCookie) {
        this.sessionIdCookie = sessionIdCookie;
    }

    /**
     * Gets session dao.
     *
     * @return the session dao
     */
    public SessionDAO getSessionDAO() {
        return sessionDAO;
    }

    /**
     * Sets session dao.
     *
     * @param sessionDAO the session dao
     */
    public void setSessionDAO(SessionDAO sessionDAO) {
        this.sessionDAO = sessionDAO;
    }

    /**
     * Gets session factory.
     *
     * @return the session factory
     */
    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    /**
     * Sets session factory.
     *
     * @param sessionFactory the session factory
     */
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    /**
     * Gets session manager.
     *
     * @return the session manager
     */
    public WebSessionManager getSessionManager() {
        return sessionManager;
    }

    /**
     * Sets session manager.
     *
     * @param sessionManager the session manager
     */
    public void setSessionManager(WebSessionManager sessionManager) {
        this.sessionManager = sessionManager;
    }

    /**
     * Gets redis connection factory.
     *
     * @return the redis connection factory
     */
    public RedisConnectionFactory getRedisConnectionFactory() {
        return redisConnectionFactory;
    }

    /**
     * Sets redis connection factory.
     *
     * @param redisConnectionFactory the redis connection factory
     */
    public void setRedisConnectionFactory(RedisConnectionFactory redisConnectionFactory) {
        this.redisConnectionFactory = redisConnectionFactory;
    }

    @Override
    public DefaultWebSecurityManager generateSecurityManager() {
        SessionManager sessionManager = getSessionManager();
        SubjectFactory subjectFactory = getSubjectFactory();

        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        Collection realms = getRealms().values();

        securityManager.setRealms(realms);
        securityManager.setSubjectFactory(subjectFactory);
        securityManager.setSessionManager(sessionManager);
        return securityManager;
    }

    @Override
    public ShiroFilterFactoryBean generateShiroFilterFactoryBean(DefaultWebSecurityManager securityManager) {
        ShiroFilterChainDefinition shiroFilterChainDefinition = getShiroFilterChainDefinition();
        ShiroFilterFactoryBean filterFactoryBean = new ShiroFilterFactoryBean();
        filterFactoryBean.setLoginUrl(getConfig().getCas().getServer().getLoginUrl());
        filterFactoryBean.setSuccessUrl(getConfig().getCas().getClient().getSuccessUrl());
        filterFactoryBean.setUnauthorizedUrl(getConfig().getCas().getClient().getUnauthorizedUrl());
        filterFactoryBean.setSecurityManager(securityManager);
        filterFactoryBean.setFilterChainDefinitionMap(shiroFilterChainDefinition.getFilterChainMap());
        Map filters = getShiroFilters();
        filterFactoryBean.setFilters(filters);
        return filterFactoryBean;

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy