从 OPENID 和 SAML 2.0 中选择什么

what to choose from OPENID and SAML 2.0

我对 Open ID 和 SAML 都不熟悉,需要您的帮助才能从两者中选择正确的单点登录。

我的应用程序有来自不同域的用户,例如

abc@testdomain.com ,xyz@xyzdomain.com

等等

哪个更适合我的申请?请提出建议。

我曾尝试在互联网上搜索,但无法找到并列差异。 此外,使用 .NET C# MVC 实现它的任何演示或参考资料都会有所帮助。

我的看法:

  • SAML - 复杂的基于 XML 的企业域协议
  • Open ID - 易于实施,因为很多 libs/tools + 它是许多当前 apps/identity 提供商(Google、LinkedIn、GitHub 的标准 SSO 选项)

如果您不需要支持 SAML,请使用 Open ID。经过认证的库列表(也有 C#)http://openid.net/developers/certified/.

是的 - 适用于企业的 SAML - 适用于移动设备的 OpenID 或 "modern authentication"。

对于 C#,使用 OWIN OpenID Connect NuGet 包。

如果您使用的是 Azure AD,请查看 here

首先,了解某个地方的某个人将不得不实际验证 "abc@testdomain.com" 等人的身份(通常,通过询问和验证密码)。一般来说,"someone" 是一个身份提供者或 IdP。其次,请注意,虽然您指定了 SAML 2.0,但我假设您还指的是当前(2018 年和现在)版本的 OpenID,"OpenID Connect";以前的 OpenID 标准(通过 1.2)非常不同,不再受支持,并且在 "should I support it?" 排名中会低于 "SAML"。

对于您要支持的用户,他们是否已经设置了 IdP?如果是这样,IdP 是否支持 OpenID Connect 并且 是否 支持 SAML(或其他各种 less-common SSO 标准之一,如 WS-Trust、CAS、Facebook Connect、Kerberos 等)?在那种情况下 只有 ,我会选择 SAML。

如果没有当前的 IdP 设置,或者如果有 IdP 并且 IdP 支持 OpenID Connect (OIDC),那么我会首先支持 OIDC。

显然,如果设置了 IdP, 他们不打算或不愿意继续使用更新的 IdP, IdP 仅支持某些东西 "odd",例如 CAS 或 Kerberos,您必须使用您的服务而不是 SAML 或 OIDC 来实现该标准。

一般来说,OIDC 比 SAML 获得更多关注的速度更快。 Microsoft(Azure AD、ADFS)、Google、Auth0、Ping 和大多数其他领先的 IdP 供应商要么单独支持 OIDC,要么建议使用 OIDC。它有几乎所有语言的大型图书馆支持。它是最 commonly-used API 授权框架(OAuth 2.0)的扩展。就护理和喂养而言,它只需要很少的时间。如果您 运行 在设置 OIDC 依赖方支持方面遇到问题,可以在线获得无数 current-technology 资源。

相比之下,SAML 是一个复杂的标准,没有很好的库支持,并且往往依赖于您可能不想使用的技术(例如 XML)。设置和维护 SAML 集成非常耗时,尤其是在跨系统保持证书同步和更新方面。根据我个人的经验,您可以找到有关设置 SAML 的帮助的地方通常会过时(不是因为 SAML 本身发生了变化,而是因为它周围的一切都发生了变化),因此您需要能够翻译说明,例如, Windows 2008,无论你今天实际使用什么。总的来说,SAML 具有技术衰落的所有特征。

话虽如此,SAML 仍在某些领域广泛使用,尤其是大型公司或机构(例如大学),他们在 10 多年前对 SAML 进行了大量投资并且不打算重新进行该投资。如果你和他们一起工作,你几乎没有其他选择。