我可以在我的网站上允许任何SAML身份提供商吗?

时间:2017-06-26 21:30:43

标签: saml saml-2.0

我有一个网络应用,我想让我的用户通过SAML登录。我想允许他们通过提供IdP登录URL,注销URL,证书等来配置他们的身份提供者,或者只是一个元数据网址。

此外,我的一些客户希望设置和使用他们自己的内部身份提供商。

我的问题是,一旦交换密钥,验证签名等,我怎么能相信身份提供商是安全的?当SAMLResponse进入时(特别是通过IdP发起的SSO),我怎么知道NameID元素中的电子邮件地址与想要登录的合法用户有关?什么阻止他们发送我自己的电子邮件地址以网站管理员身份登录?

我已经阅读了很多SAML 2.0规范,这里有答案,以及博客文章,但我还没有看到这个问题的具体解决方案。

2 个答案:

答案 0 :(得分:0)

您无法更改SAML令牌,因为它已签名。

最终,您需要检查所有这些IDP。

出于这个原因,联邦是一个手动过程。

如果你联邦,你信任。

答案 1 :(得分:0)

在提出问题之前,我认为明确SSO身份验证流程非常重要。

对于SAML 2.0,涉及两方,即身份提供商(IdP)和服务提供商(SP)。他们使用协议端点和证书进行反向通道(服务器到服务器)通信。

话虽如此,您可以使用各种网络层流程来确保通信过程的安全,并且不会发生man-in-the-middle攻击。

然后回到原来的问题,我认为它包含以下两个主题,如果正确的话:

  1. SAML 2.0元数据
  2. SAML 2.0属性映射
  3.   

    通过提供IdP登录URL,注销URL,证书等,或仅提供元数据网址来配置其身份提供商。

    这些都是SAML 2.0所需的元数据,因此您可以自己配置它,或者信任您的合作伙伴以您的方式执行(in your way我的意思是不同的SAML 2.0联合服务器有自己的元数据集,但是一般来说它们应该是一样的。)

      

    交换密钥,验证签名等后,我如何相信身份提供商是安全的?当SAMLResponse进入时(特别是通过IdP发起的SSO),我怎么知道NameID元素中的电子邮件地址与想要登录的合法用户有关?什么阻止他们发送我自己的电子邮件地址以网站管理员身份登录?

    1. IdP必须安全,好像他们被黑客攻击(社会工程),他们可以登录您的应用程序。

    2. SAML属性映射,除了SAML_SUBJECT之外,还有其他属性可用于确定SAML_SUBJECT的角色(如果我们可以讨论provisioning),或者您可以预定义角色映射到该用户(SAML_SUBJECT)以确定角色。

    3. 由于SAML仅用于身份验证并交换用户的可信信息,因此SP应用程序需要如何使用双方同意的SAML有效负载中的信息。

      关于由@nzpcmad评论的令牌操作,我认为这是可能的,当PingFederate通过OpenToken适配器与SP应用程序对话时,这在PingFederate中称为合同履行。 Okta,OAuth0都有类似的概念。

      希望这能回答你的问题。