是否可以通过 SSO 将旧 CAS 3.5.3 服务器的身份验证传递到最近的 Keycloak 15.0.2?

Posted

技术标签:

【中文标题】是否可以通过 SSO 将旧 CAS 3.5.3 服务器的身份验证传递到最近的 Keycloak 15.0.2?【英文标题】:Is it possible to pass authentication from an old CAS 3.5.3 Server to a recent Keycloak 15.0.2 with SSO? 【发布时间】:2022-01-07 22:13:53 【问题描述】:

我有一个由 CAS 服务器(版本 3.5.3)保护的现有 JSF 应用程序。

由于自定义,我无法将 CAS 服务器更新到新版本。因此没有可用的 OIDC、OAuth2 或其他最先进的协议。我认为只有 CAS 和 SAML 的早期版本。

我想为服务提供商的外部 Keycloak 建立 SSO。他们希望我设置一个连接到他们的外部 IDP 的内部身份提供程序。

我以前用 Keycloak 做过这个,但在旧情况下,我的内部 Keycloak 一直是单点身份验证。这次是 CAS。

有没有办法将身份验证从 CAS 3.5.3 传递到我的内部 Keycloak 而无需再次登录?

我曾想过实现一个Custom User Storage Provider SPI 来连接到我现有的用户数据库。但随后我将不得不再次登录我的 Keycloak。这是真的吗?

这是否可以通过使用CAS Extension 对我的内部 Keycloak 实施 CAS 协议来实现?我认为这允许 Keycloak 使用 CAS 协议创建客户端,但不能通过现有的 CAS 服务器进行 SSO,并且用户必须登录到我的 Keyloak。如果我错了,请纠正我。

【问题讨论】:

【参考方案1】:

有没有办法将身份验证从 CAS 3.5.3 传递到我的内部 Keycloak 而无需再次登录?

不,如果有的话,将需要大量的编码和开发。如果您无法升级,则很可能无论如何都无法进行此类更改。

这里有一个用于外部 SAML2 身份验证的插件,它应该允许将 CAS 登录请求重定向到外部 SAML2 IDP:

https://github.com/UniconLabs/cas-saml-auth

如果您的 keycloak 支持 SAML2,也许这可以工作。请注意,该插件自 2016 年以来一直没有被触及,并且没有任何人支持它。如果您决定坚持下去,您将 100% 靠自己。

【讨论】:

以上是关于是否可以通过 SSO 将旧 CAS 3.5.3 服务器的身份验证传递到最近的 Keycloak 15.0.2?的主要内容,如果未能解决你的问题,请参考以下文章

nginx配置sso登录

简单 SSO - 使用自定义身份验证 - CAS 或一些 Oauth 或 openid 服务器?

简单 SSO - 使用自定义身份验证 - CAS 或一些 Oauth 或 openid 服务器?

CAS SSO单点登录框架学习

CAS SSO单点登录框架介绍

CAS SSO单点登录框架学习