提问者:小点点

Grails Spring Security性和CAS问题


我已经安装了Spring Security使用s2-快速入门和Spring SecurityCAS插件。我有正确设置的CAS插件(我相信),但是当我尝试访问localhost:8080/caslogin/j_spring_security_check页面强制CAS登录时,我被重定向到默认的Spring Security登录页面,而不是我们公司设置的CAS登录页面。有人知道是什么导致了这种行为吗?这是我目前在Config. groovy中的CAS设置:

grails.plugins.springsecurity.cas.loginUri = '/login'
grails.plugins.springsecurity.cas.serverUrlPrefix = 'https://cas-server/cas'
grails.plugins.springsecurity.cas.key = 'grails-spring-security-cas'
grails.plugins.springsecurity.cas.filterProcessUrl = '/j_spring_security_check'
grails.plugins.springsecurity.cas.serverName = 'http://localhost:8080'
grails.plugins.springsecurity.cas.serviceUrl = 'http://localhost:8080/caslogin/j_spring_security_check'
grails.plugins.springsecurity.cas.proxyCallbackUrl = 'http://localhost:8080/caslogin/secure/receptor'
grails.plugins.springsecurity.cas.proxyReceptorUrl = '/secure/receptor'
grails.plugins.springsecurity.cas.active = true

grails.plugins.springsecurity.providerNames = ['casAuthenticationProvider']

// Added by the Spring Security Core plugin:
grails.plugins.springsecurity.userLookup.userDomainClassName = 'com.mycompany.caslogin.User'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'com.mycompany.caslogin.UserRole'
grails.plugins.springsecurity.authority.className = 'com.mycompany.caslogin.Role'

共1个答案

匿名用户

我们已经成功地在Grails应用程序中使用了CAS,请查看下面的Config. groovy:

在我的情况下,当我试图去localhost:8080/MyApp/j_spring_cas_security_check我得到一个访问被拒绝404。

grails.serverURL = "http://192.168.10.12:8080/MyApp"

plugins {

    springsecurity {

        active = true
        rejectIfNoRule = false

        password.algorithm = 'SHA-256'
        securityConfigType = grails.plugins.springsecurity.SecurityConfigType.Requestmap //url permission
        apf.filterProcessesUrl = '/j_spring_security_check'

        auth {
            forceHttps = false
            loginFormUrl = '/access/login'
            ajaxLoginFormUrl = '/access/login?remote=true'
        }
        adh {
            errorPage = '/access/denied'
            ajaxErrorPage = '/acesso/denied?remote=true'
        }
        ajaxHeader = 'X-Requested-With'
        failureHandler {
            ajaxAuthFailUrl = '/access/fail?remote=true'
            defaultFailureUrl = '/access/fail?login_error=1' //TODO
        }
        successHandler {
            defaultTargetUrl = '/'
            alwaysUseDefault = false
        }

        // Configuracao do CAS
        providerNames = ['casAuthenticationProvider']

        cas {
            serverUrlPrefix = 'https://mycompany.com.br:8443/cas'
            loginUri = '/login'
            proxyReceptorUrl = '/secure/receptor'
            serviceUrl = "${grails.serverURL}/j_spring_cas_security_check"
            proxyCallbackUrl = "${grails.serverURL}/secure/receptor"
        }

        logout.afterLogoutUrl = 'https://mycompany.com.br:8443/cas/logout?service=${grails.serverURL}/'

        // Customizacao de Entidades
        userLookup.userDomainClassName = 'br.com.mycompany.app.access.User'
        userLookup.authoritiesPropertyName = 'permissions'
        authority.className = 'br.com.mycompany.app.access.Permission'
        requestMap.className = 'br.com.mycompany.app.access.UrlAccess'
        requestMap.configAttributeField = 'ruleExpression'
    }

}