从 OPENID 和 SAML 2.0 中选择什么



我是Open ID和SAML的新手,需要您的帮助才能从两者中选择正确的单点登录。

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

abc@testdomain.com ,xyz@xyzdomain.com

等。

哪个更适合我的应用程序?,请建议。

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

我的观点:

  • SAML - 适用于企业域的基于 XML 的复杂协议
  • Open ID - 易于实现,因为很多库/工具 + 它是许多当前应用程序/身份提供商(Google、LinkedIn、GitHub(的标准 SSO 选项

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

是的 - SAML for Enterprise - OpenID 用于移动或"现代身份验证"。

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

如果你使用的是 Azure AD,请查看此处。

首先,了解某个地方的某个人必须实际验证"abc@testdomain.com"等的身份(通常,通过询问和验证密码(。一般而言,"某人"是身份提供商或 IdP。其次,请注意,虽然您指定了SAML 2.0,但我假设您也是指OpenID的当前版本(2018年及现在(,"OpenID Connect";以前的OpenID标准(通过1.2(非常不同,不再受支持,并且在"我应该支持它吗?"排名中将低于"SAML"。

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

如果当前没有设置IdP,或者有一个IdP并且IdP支持OpenID Connect(OIDC(,那么我会先选择OIDC支持。

显然,如果设置了 IdP,并且他们不打算或不愿意推进更新的 IdP,并且该 IdP 仅支持 CAS 或Kerberos 等"奇怪"的东西,则必须在您的服务中实施该标准,而不是 SAML 或 OIDC。

一般来说,OIDC 比 SAML 更快地获得更多的牵引力。Microsoft(Azure AD,ADFS(,Google,Auth0,Ping和大多数其他领先的IdP供应商要么仅支持OIDC,要么建议使用OIDC。它几乎每种语言都有大型库支持。它是最常用的API授权框架(OAuth 2.0(的扩展。它在护理和喂养方面几乎不需要。如果在设置 OIDC 信赖方支持时遇到问题,可以在线找到无数当前技术资源。

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

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

最新更新