选择正确的身份验证协议

Choosing the correct authentication protocol

你能帮我确定我应该为以下用例使用哪种身份验证协议吗?我是这个开发领域的新手,对那里的所有技术信息有点困惑 - 所以 'for dummies' 回答将不胜感激。

我有一个提供英语课程的在线学习网站。出现了我们应该与第 3 方企业系统集成的要求(因为我们向企业出售课程)。

主要要求是允许第 3 方系统将他们的用户重定向到我的站点,并让他们使用第 3 方系统凭据访问它(我相信这称为单点登录?)。第 3 方系统显然是远程系统,我更关注功能而不是 1 个特定客户/集成。

所以,我想了解的是,我应该提供什么功能来实现这种情况?我正在尝试开发一个通用的 'developer toolkit',这样我就不必在大量单独的集成出现时陷入困境。

我读到此 space 中有很多协议/内容(SAML、OAuth、OAuth2、OpenID、Shibboleth 等)- 所以我想知道我应该把注意力和研究集中在哪里?企业系统(CRM 等)中哪个最常见?

另外,作为一个子问题。 OAuth 2.0 发布后,OAuth 是否被弃用或嘲笑?

非常感谢任何帮助!

谢谢大家。

SAML 2.0 是企业系统中最流行的单点登录协议。大多数(如果不是全部)企业都能够为第三方网站提供基于 SAML 的 SSO。

理想情况下,如果正确实施,企业将需要配置他们的系统以发送您网站的 SAML 断言(XML 形式的身份信息)并且您将断言中的信息用于登录用户.

在这种情况下,企业将称为身份提供者 (IDP),而您的网站将称为服务提供者 (SP)

有许多可用的开源库允许实施 SAML(Spring 等),或者您现有的服务器也可能具有此功能。

完成基本实现后,您可以选择做两件事:

  1. 如果您的数据库中不存在该用户,请创建一个新记录并允许该用户访问。

  2. 您要集成的企业必须事先提供用户列表,然后您可以只允许数据库中存在的用户。

虽然第二个选项开销很大而且不经常使用。

---------------------------- 回复评论---------------- ----------

这取决于您设置交互的方式。有两种设置 SAML SSO 的方法:

  1. SP initiated SSO:这意味着用户始终访问您的站点,然后被重定向到 IDP 进行身份验证。 SAML 令牌被发送回您的站点 post 身份验证。

  2. IDP 发起的 SSO:其工作方式是 IDP 生成 SAML 令牌并直接post将其发送到您网站的 SAML 端点。

如果您使用选项#1 并且用户已经登录,则不需要步骤 C,因为用户已经登录并且可以直接生成令牌。

对于选项#2,只需要步骤 D 和 E。但是,我强烈建议您不要忽略 SP 发起的 SSO 实施,因为一些 IDP 不支持 IDP 发起的 SSO。

希望对您有所帮助

阿维