拦截Spring CAS登录以获取额外的验证步骤

时间:2015-01-08 15:17:48

标签: spring authentication spring-security cas

我正在尝试执行额外的验证步骤Spring + CAS已成功验证凭据。

在我正在研究的系统中,不仅用户被认为是活动的或非活动的,而且还有订阅来访问应用程序服务。我正在尝试检测没有​​有效订阅的用户,然后验证失败,并将用户发送回登录屏幕,并显示解释错误性质的消息。

我正在尝试各种方法来实现这一目标。我能够获得有关使用和实现Spring UserDetailsS​​ervice的订阅的所有信息。从那里我可以确定给定用户是否有有效订阅。

我遇到困难的部分是尝试在这种情况下失败登录流程。

UserDetailsS​​ervice可以抛出UsernameNotFoundException,但我还没有找到一种优雅的方法来处理应用程序中的那些。

我最常尝试的方法是创建自定义AuthenticationSuccessHandler。问题是,到目前为止,CAS已经对用户进行了身份验证。我已经尝试将Authentication对象的setAuthenticated方法设置为false以尝试使身份验证无效。我也尝试过重定向到注销。由于CAS是一种集中式服务,因此获得正确的重定向URL确实是一种真正的痛苦。

我想知道是否有任何对Spring Security有更多专业知识的人可能会建议一种更好的方法来在登录时添加额外的验证步骤。

1 个答案:

答案 0 :(得分:0)

由于CAS服务器执行身份验证,为什么不在CAS中创建自定义身份验证处理程序,以检查用户是否具有有效订阅以及验证用户凭据?