现有帐户和服务提供商之间的SAML



背景:我有一个带有用户名(电子邮件)和密码的基本用户数据库。用户可以登录使用这些凭据的网站。从网站上,他们获得了指向他们可以访问的不同服务的链接,但是使用不同的用户名/密码。因此,他们单击链接"打开我的服务X",必须使用服务唯一的登录凭据登录。我确实有用户服务登录名。因此我可以映射本地用户< => service-user。

我希望在Service X之间进行SSO,该服务X支持SAML和我的网站。

问题/问题:我希望用户在我的数据库中使用其用户/密码登录,然后单登录到服务X,其中服务X支持SAML。我不希望用户能够使用服务X中的SAML支持注册我网站的新用户帐户。用户必须已经在我的数据库中有一个帐户。

所以我的问题可能很模糊,但是我很难掌握如何实现这一目标?

我正在考虑让我的WebApp成为SAML身份提供商,以便将SSO请求转移回我的WebApp并为其服务使用者进行了验证。那是正确的方法吗?

您的 SAML IdP在正确的轨道上。基本上涉及三个部分。您的电子邮件数据库(身份),您现有的应用程序前端和支持SAML的远程服务。通常是SAML2

要在您的应用程序组合(您自己的应用程序和远程服务)上获取单个登录(SSO),您可以像Shibboleth IDP一样安装IdP,然后将您的应用转换为使用它,而不是使用电子邮件/密码登录。就像您必须将应用程序转换为SAML SP一样,这将需要大量的工作,就像远程服务一样。

一种更简单的方法可能是仅将IDP用于SAML到远程服务,并让IDP认识到您的用户已经使用其电子邮件/密码登录。曲奇饼?因此,IDP绝不应该显示登录页面,因为它可以识别您的应用程序的cookie并与数据库中的用户匹配。然后,它根据该用户的信息将SAML属性释放到远程服务中。这也涵盖了您不允许通过远程服务中的SAML创建帐户的用例。

这可能意味着您可能会出现以下URL:

  • https://yourapp.com/
  • https://yourapp.com/idp/

您的用户使用第一个URL登录,并且远程服务使用第二个URL。这样,您的应用cookie可以在/IDP端点上可见,但是您需要编写代码以与数据库中的用户匹配。

最新更新