java - 成功登录后 CAS 重定向至 URL

标签 java single-sign-on cas

Here描述了一种解决方案,用于通过使用 AccessStrategy 根据条件处理到自定义 URL 的重定向。

然而,这是未经授权的登录逻辑流程的一部分,因此会导致仍未登录的用户到达我们重定向到的最终网址。 (通过getUnauthorizedUrl)

如果我们想根据条件重定向用户,例如通过向网络流注入(inject)一个操作,我们如何操作返回 URL 以更改为自定义 URL?

WebUtils.getService(requestContext) 包括 source/originalUrl 的 getter,但没有明显的方法通过操作 bean 设置/操作所述值。

附:目前使用CAS版本5.3.x

最佳答案

来自 CAS 的正常 Web 应用程序的响应是使用 WebApplicationServiceResponseBuilder 构建的。

如果您检查 this block您会发现最终的响应是使用 WebApplicationServiceResponseBuilder bean 构建的。只有在上下文中尚未找到同名的现有 bean 时,才会有条件地创建它。因此,要提供您自己的,您只需使用您自己的 @Configuration 类注册一个具有相同名称的 bean。

@Bean
public ResponseBuilder<WebApplicationService> webApplicationServiceResponseBuilder() {
    return new MyOwnWebApplicationServiceResponseBuilder(...);
}

...然后继续设计您自己的 MyOwnWebApplicationServiceResponseBuilder,甚至可以通过扩展 WebApplicationServiceResponseBuilder 并在必要时覆盖您需要的内容来有条件地构建最终重定向逻辑。

要了解 @Configuration 类的一般工作原理,您可以:

关于java - 成功登录后 CAS 重定向至 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54711249/

相关文章:

c# - 具有一个登录应用程序的 asp.net 4.0 应用程序的单点登录 (SSO)

java - Apereo CAS 5.3.x : how to get logged user, 来自 CAS 服务器,在 java cas 客户端登录后

cas - Jasig CAS4.0,代理认证异常

java - JPA/hibernate java.lang.NoSuchMethodError

java - 使用java发送邮件时出现异常

ruby-on-rails - 如何使用 rails 将设计登录信息传递到不同的应用程序

single-sign-on - 是否可以使用 CAS 服务器对 Atlassian Crowd 用户进行身份验证?

java - 从 Android Studio 中的自定义应用发送电子邮件 + 附件,为什么 URI 为空?

java - 为什么 UtteranceProgress Listener 不会在 Text to Speech 上被调用?

java - Cas - 自定义可接受的使用策略 View