如何将OIDC与基于JSP + Spring MVC的应用程序一起使用



我们有一堆应用程序,我们使用SAML和Keycloak作为我们的身份提供者。此设置可帮助我们在 15 个奇数个应用程序中实现 SSO。几乎所有这些应用程序都是JSP+Spring WebFlow + Spring MVC,所以我们使用SAML,你的一个应用程序是Angular+REST,所以我们使用OIDC和Keycloak。

无论协议和技术如何,我们都能够在这些应用程序之间实现无缝SSO,因为我们的身份提供者是相同的。

今天我们得到了一个新的更新,对于我们的应用程序现代化推送,我们必须将我们的 JWT 令牌传递给我们正在使用的所有关键内部后端服务,因为这样我们的后端调用也可以进行自己的授权和身份验证。

对于我使用 OIDC 的应用程序,我始终可以通过 JWT,因为一旦用户登录,我总是拥有它。但是对于启用SAML的应用程序,我目前还没有。

在这里,我可以想到一个解决方案,即将所有 14 个应用程序从 SAML 迁移到 OIDC,但由于应用程序是基于 JSP+Spring Web FLow + Spring MVC 的,我不确定这是否可行。即使可能,我认为迁移所有应用程序也将是相当大的开销,因为这需要对任何回归进行足够的测试。

如果您认为OIDC可以与基于JSP和Spring MVC/WebFlow的应用程序一起使用,那么您可以分享更多关于它的见解,因为在OIDC中,所有会话管理都是在客户端完成的,但在Spring MVC/WebFlow的情况下,所有会话都在服务器端维护。

这里有人可以建议我一些更好的方法来做到这一点。没有办法逃避将 JWT 传递给后端调用的要求,所以我真的需要一些东西。

我不确定您是否可以以某种方式将这两种协议集成到服务中,但从我的角度来看,这里的方法是迁移到 OIDC。

在Keycloak端,它应该只需要将客户端的类型从SAML更改为OIDC。在您的应用程序中,您可能需要执行更多配置,但是如果您使用的是Spring Security SAML扩展,则应该不会那么困难,因为您可以迁移到Keycloak适配器,该适配器也可以在Spring Security的顶部工作。

您显然不需要一次迁移所有应用程序,因为您可以同时保持不同的客户端类型兼容。

最新更新