代码之家  ›  专栏  ›  技术社区  ›  Pulkit Gupta

如何在基于JSP+Spring MVC的应用程序中使用OIDC

  •  1
  • Pulkit Gupta  · 技术社区  · 7 年前

    我们有一组应用程序,在这些应用程序上,我们使用SAML和Keyclope作为身份提供者。这个设置帮助我们在15多个应用程序中实现SSO。几乎所有这些应用程序都是JSP+SpringWebFlow+SpringMVC,所以我们使用SAML,您的一个应用程序是Angular+REST,所以我们将OIDC与Key斗篷一起使用。

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

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

    对于使用OIDC的应用程序,只要用户登录,我就可以通过JWT。但对于支持SAML的应用程序,我现在还没有。

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

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

    这里有人能给我一些更好的建议吗。无法逃避将JWT传递给后端调用的要求,因此我确实需要一些东西来实现这一点。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Aritz    7 年前

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

    在Keyclope端,只需要将客户机的类型从SAML更改为OIDC。在应用程序中,您可能需要进行更多配置,但如果您使用 Spring Security SAML Extension 这应该没有那么困难,因为您可以迁移到 Keycloak Adapter ,它也在Spring Security的顶部工作。

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