问题标签 [spring-security-cas]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-webflow - Jasig CAS - 成功登录后如何自定义 WebFlow 以重定向用户?
我正在尝试将 CAS 身份验证集成到我们的 Web 服务中,并使用Jasig CAS 服务器(v. 4.2),它是基于 Spring 的 Web 应用程序。
不幸的是,Jasig CAS 服务器在成功登录后只能使用服务 ID 进行重定向。这是不可接受的,因为 CAS 服务器位于反向代理后面,我们不使用 DNS。因此,登录 URL 如下所示:
http://a.b.c.d/cas/login?service=http://x.x.x.x/context-path/auth-entry-point
在哪里
- abcd - 外部(代理)IP 地址
- xxxx - 内部(服务/CAS 客户端)IP 地址
我已阅读 Jasig 文档,但找不到混淆服务 URL 的方法。现在我正在尝试实现自定义逻辑。我想将重定向 url 作为单独的参数传递:
http://a.b.c.d/login?service=<serviceUID_like_YYY-YYY-YYY>&redirect=<base64_encoded_URL>
.. 并使用此参数而不是服务 ID 进行重定向。
根据文档 Jasig CAS 使用 Spring Webflow 来实现登录场景(login-webflow.xml)。这就是重定向引起的地方:
<end-state id="redirectView" view="externalRedirect:#{requestScope.response.url}"/>
由于我不熟悉 Spring Weblow,所以问题是:
如何接收“重定向” URL 参数、解码并将其用于重定向?
PS对不起我的英语不好,我希望它至少是可解析的:-)
spring - 从 Spring Security 3.x 升级到 4.x
上面的代码片段在迁移到 Spring Security 4.x 时抛出错误。请让我知道是否有解决方案。我检查了迁移指南,但没有提到任何解决方案。此代码段适用于 Spring Security 3.x。
spring - Spring Boot Security 升级打破 CAS
我试图让 Spring Boot + Spring Security 与 CAS 一起工作,但遇到了一些麻烦。经过一段时间的研究,我发现了一个很好的示例项目 https://github.com/jgribonvald/demo-spring-security-cas 非常好,我只需要将 CAS URL 更改为我的,它就可以正常工作了。
它使用spring boot 1.2.1.RELEASE,我想将它升级到最新版本(1.5.2.RELEASE)。为了做到这一点,我必须进行一些修改(修复编译错误,因为在较新版本中删除了一些类)。
修复编译错误后,我使用旧版本对其进行了测试,它仍然可以工作,但使用最新版本失败了。它casServerUrlPrefix
在 SingleSignOutFilter 中抛出为空的错误
例外
即使casServerUrlPrefix
已设置并且它适用于旧版本。因此我的问题是,这是否是升级 Spring Security 时的一些常见错误/错误,应该如何修复它?
编辑:
我尝试进行较小的升级,它适用于 spring boot 1.2.8.RELEASE
,但失败了1.3.0.RELEASE
. 我还尝试在升级 Spring Boot 时将 Spring Security 版本更改为更低,但这并没有帮助。
然后我创建了自己SingleSignOutFilter
的硬编码casServerUrlPrefix
,我摆脱了那个错误,我可以看到,它casServerUrlPrefix
确实已经设置好了。不幸的是,这并没有解决问题,我仍然无法使用我的网络应用程序,但现在它只是不会在日志中引发异常。
spring - Spring Security CAS:在 login.jsp 上显示客户端错误
我正在使用Spring Security
并CAS
遇到以下问题。当从CAS Server
(例如无效的用户名/密码)抛出身份验证错误时,它会很好地显示在表单中,并使用标签正确显示:
但是在CAS Server
返回成功并且AuthenticationException
抛出的情况下,CAS Client
没有任何错误显示为基本上CAS Client
重定向回http://localhost:8080/cas/login?service=http%3A%2F%2Flocalhost%3A8080%2Fj_spring_cas_security_check
所以我无法真正显示客户端出了什么问题。JSP
如果它抛出,是否有可能以某种方式显示来自客户端的错误AuthenticationException
?
spring-security - 从 Spring Security 中的属性文件读取值时出错:会话管理标记
我需要在 Spring Security 中实现会话管理,但是在 tomcat 上部署应用程序时出现错误。应用程序正在尝试从属性文件中获取 invalid-session-url 和 expired-url 属性值,但在耗尽时出现错误。
我只在会话管理标签上收到此错误。任何人都有任何想法。
java - 使用 SingleSignOutFilter 时 SingleSignOutHttpSessionListener 的实用程序
我目前尝试实现一个 CAS 客户端,一切正常:身份验证和注销过程就像一个魅力。这是我的单点注销流程代码:
我这样做是因为在我经历过的每个教程中,他们都说要放 aSingleSignOutFilter
和SingleSignOutHttpSessionListener
. 所以它有效,但是深入研究这些类中的每一个,我不了解SingleSignOutHttpSessionListener
. 如果我删除它,它仍然可以正常工作,但我在这个论坛中看到,有时会话不会被过滤器破坏。
我的问题是:它是如何发生的,什么时候发生的,以及如何重现它来测试它?
spring - Spring Security CAS 和 HttpBasic,在授予票证后未调用 CasAuthentcationProvider
我有一个 Maven 多模块应用程序,其中主模块依赖于其他模块。此主模块由 Spring Security CAS 保护,子模块需要基本身份验证。这是子模块的安全配置示例:
以及主模块的安全配置:
问题是,当 CAS 服务器授予票证并重定向到服务 urlhttp://localhost:8080/cas-client/login/cas?ticket=ST-19-1clKw2tZ5MVp0OznfAun
时:casAuthenticationProvider
没有调用。调用的是子模块authenticationProvider
,结果是401 Unauthorized
错误。为什么不调用 CAS SecurityFilterChain?我认为这是由 Spring Security CAS 处理的,但似乎不是。我使用 Spring Security 5.1.2.RELEASE 非常感谢您的帮助。
spring-security - CAS客户端(spring boot + spring security)如何从CAS Server获取更多字段?
我阅读了这篇文章CAS SSO With Spring Security并成功运行了源代码,但是这个客户端只获取用户名,我希望我的客户端需要来自 CAS 服务器的更多字段。
在我以前使用传统 SpringMVC 的 CAS 客户端中,我可以获取所有文件,包括用户名、电话号码、密码和电子邮件。主要步骤如下: 在 CAS 服务器的文件 WEB-INF/classes/services/Apereo-10000002.json 中,我添加了一个选项:
在客户端,我使用getUserPrincipal
如下
现在我想根据spring boot + spring security
上述文章实现一个 CAS 客户端。但是根据文章代码,我该怎么办?提前致谢!
spring-boot - 构造函数的参数 0 需要一个找不到类型的 bean
我想要一个 SSO CAS 身份验证,我按照 Bealdung 教程的说明(https://www.baeldung.com/spring-security-cas-sso第 4 部分)但是当我作为 spring boot 应用程序运行时我'有这个错误
SecurityConfig 中构造函数的参数 0 需要找不到类型为“org.springframework.security.cas.authentication.CasAuthenticationProvider”的 bean。
行动:
考虑在你的配置中定义一个 'org.springframework.security.cas.authentication.CasAuthenticationProvider' 类型的 bean。
我在这里看到了同样的问题,但是使用了其他 spring 的导入,我尝试添加 @Bean 注释但没有更多结果
它假设重定向到安全登录页面(cas 服务器登录页面),但现在我无法启动应用程序。
谢谢你的帮助
编辑:我的 CasAuthenticationProvider bean 在我的 CasSecuredAppApplication 类中,就像 tuto 说的
它应该由我的 SecurityConfig 类找到吗?
grails - Grails 3.3.2 Spring Security CAS 不能通过负载均衡器工作,但可以通过部署在其上的内部服务器正常工作
我们有一个使用 Spring Security Core 和 Spring Security CAS 插件的 Grails 3.3.2 应用程序。使用自定义 userDetailsService 类从 Oracle 数据库中获取用户信息。当点击部署应用程序实例的 tomcat 服务器的内部 URL 时,此应用程序通过 CAS 登录很好,但是当我们尝试通过负载均衡器访问应用程序时,我们会遇到重定向循环和错误。
这是设置。我们有两个实例;一个配置为直接在应用服务器上访问,另一个通过充当反向代理的负载均衡器访问。直接在服务器上访问一个工作正常(重定向到 CAS,您登录,CAS 重定向回来,然后您就进入了)。通过负载均衡器重定向到 CAS,您登录,CAS 将您重定向回来,凭证被正确传递,但随后 Groovy 中的某些东西将其匿名化,您得到拒绝访问,然后返回 CAS。但是 CAS 票是有效的,所以 CAS 把你送回去,然后循环往复。在浏览器确定存在错误并停止它之前,它会重复 5 或 6 次。
将日志记录设置为调试,我们可以看到哪里出了问题,但无法弄清楚原因。
当它仅在内部服务器上用于我们的应用程序实例时,我们的自定义 userDetailsService 被用作主体而不是grails.anonymous.user。
谁能告诉我为什么在一个实例中 SecurityContextHolder 从我们的 userDetailsService 获取主体并且 CAS 工作正常,而在负载均衡器后面的另一个实例中,SecurityContextHolder 正在获取 'grails.plugin.springsecurity.authentication.GrailsAnonymousAuthenticationToken@dc4d198: Principal: org .springframework.security.core.userdetails.User@dc730200:用户名:grails.anonymous.user;
谢谢你,迈克