无法使用 grails 通过 CAS 单点登录登录

Unable to login through CAS Single Sign-on using grails

我正在使用具有 spring 安全核心和 spring 安全 CAS 插件的 grails 应用程序。我已经设置了一个带有数据库身份验证的 jasig CAS 服务器。到目前为止,如果我使用数据库中的用户直接通过 CAS 登录,它工作正常。

我遇到的问题是当我尝试从 grails 应用程序登录时。我成功地被重定向到 CAS 页面,在登录后,我被发送回我的 grails 应用程序并显示错误凭证错误。

在 CAS 服务器的 tomcat 日志中,我有以下踪迹:

2015-01-21 10:55:59,182 WARN [org.jasig.cas.authentication.PolicyBasedAuthenticationManager] - <Cannot find authentication handler that supports http://localhost:8080/myGrailsApp/secure/receptor, which suggests a configuration problem.>

以下是我在 grails 中的设置:

grails.plugin.springsecurity.cas.serverUrlPrefix = 'https://localhost:8443/cas'
grails.plugin.springsecurity.cas.loginUri = '/login'
grails.plugin.springsecurity.cas.proxyReceptorUrl = '/secure/receptor'
grails.plugin.springsecurity.cas.serviceUrl = 'http://localhost:8080/myGrailsApp/j_spring_cas_security_check'
grails.plugin.springsecurity.cas.proxyCallbackUrl = 'http://localhost:8080/myGrailsApp/secure/receptor'

这是一个具有有效 spring 安全性的现有项目,我们已经使用了一段时间,现在正尝试将其移至单点登录。

我的 CAS 服务器或 grails 应用程序缺少什么设置?我已按照 default setup for database auth handler 设置我的 CAS 服务器。

感谢您的帮助!

您真的需要使用CAS代理功能吗?因为 CAS 错误表明 CAS 服务器未配置为处理代理回调,而您的 CAS 客户端配置为使用代理(我猜:proxyReceptorUrlproxyCallbackUrl 属性)