从 SAML 迁移到 OpenID Connect

Migrating from SAML to OpenID Connect

由于 SAML 和 OpendID Connect(OIDC) 是根本不同的处理方法authentication/SSO,它们是否可以并存于同一个应用程序中?

作为一个拥有许多使用 SAML 向我们进行身份验证的供应商(外部)应用程序的组织,从 SAML 切换到 OIDC 是否合理,以便我们可以转向更 modern/simple 的单点登录解决方案在吗?

ID 管理的主要提供商,如 Okta 有很多关于如何实施 SAML 或 OIDC 的文档,但我找不到任何人或任何文档提到从一个迁移到其他。有人做过吗?涉及什么?

只要你有两个堆栈,是的,它们可以并排存在,你可以有例如。两个登录按钮 - 每个协议一个,

因为他们去同一个 IDP,所以两者的凭据是相同的。

从一个转移到另一个基本上涉及撕掉一个堆栈并用另一个替换它。

OIDC 使用 JWT 令牌。这些声明具有不同的名称,您可能无法扩充标准集。

SAML 没有任何问题。我认为这本身没有任何好处。离开旧的 - 使用 OIDC 进行所有新开发。

As SAML and OpendID Connect(OIDC) are fundamentally different methods of handling authentication/SSO, is it possible for them to live side-by-side in the same application?

协议,它们是不同的。但它们服务于相同的目的,完成身份验证和授权。现在,当您说 application 时,我们倾向于考虑最终用户应用程序。例如 Web 应用程序、独立桌面应用程序或移动应用程序。从这样的应用程序中,我看不出需要支持多种协议。在实现和可维护性方面,此类应用程序很容易支持一种 authN 和 authZ 协议。

但是如果您考虑服务器端,特别是您的 API 公开数据和服务,那么您将不得不支持多个 authN 和 authZ 协议。例如,您的服务可能会被使用 SAML 的应用程序和一些使用 OpenID Connect 的应用程序使用。因此,这些应用程序将带有 SAML 断言或 OpenID Connect 令牌,您必须对其进行验证。在这种情况下,它不是迁移,而是添加对多个 authN 和 authZ 方法的支持。

据说,通常Identity Providers确实支持多种协议。例如 Azure AD 支持 SAML 2.0 和 OpenID Connect。因此,当您的应用程序到达后端 APIs/services 时,请求可能会带有 SAML 或 OpenID Connect。您将必须通过过滤层进行理想的验证,以检测、验证和确认请求。

Major providers of ID management like Okta have a lot of docs on how to implement SAML or OIDC but I could not find anyone or any docs mentioning what level of effort is involved in migrating from one to the other. Has anyone done it? What was involved?

在设计应用程序时,最好将与 authN 和 authZ 相关的事物与核心逻辑隔离开来。这样,您就可以轻松更改 method/protocol。在一天结束时,您想要识别使用应用程序并获得在 him/her 上定义的权限的最终用户。因此,改变协议以恢复身份识别并不那么困难。但请记住,会有一些工作,例如 OpenID Connect 令牌验证、令牌过期处理之类的事情。使用图书馆让生活更轻松

为新应用程序迁移到 OpenID Connect 是个好主意。但是您可能会发现很难迁移所有应用程序(取决于它们的复杂性)。因此,在后端支持两者是理想的。此外,请尝试始终存储和检索来自身份提供者的身份详细信息。这样,协议的更改很容易,因为它们(身份提供者)支持多种协议。