如何将服务提供商用户映射到身份提供者用户?

时间:2017-04-17 18:53:24

标签: saml service-provider

我正在设置支持SAML的服务提供商。我添加了两个身份提供程序 - 一个是我从SimpleSAMLphp构建的自定义提供程序,然后是ssocircle。所以我登录到选定的身份提供者,然后它返回到我的服务提供者,我检查SAML Auth对象的属性。我构建的身份提供者返回我想要的东西(显然)。 ssocircle只返回电子邮件,名字和姓氏。

现在要将此映射到服务提供者的用户,我必须使用身份提供者提供的某些值。所以这让我想知道应该怎么做。由于ssocircle只给我一个有用的电子邮件,我是否只使用电子邮件映射到SP用户?

让我们假装ssocircle不会验证电子邮件地址。所以现在如果我使用相同的电子邮件在ssocircle创建第二个帐户,我可以作为我知道具有管理员权限的同事登录。

所以我的问题是,我能处理吗?或者管理员有责任设置身份提供者并说“你不应该使用不验证电子邮件地址的身份提供者!”还是那种性质的东西?或者我应该只允许传递特定值的身份提供者,如userid或0.9.2342.19200300.100.1.1?身份提供者通常使用什么?

2 个答案:

答案 0 :(得分:0)

嗯,你说过,两个不同的身份提供者。他们俩不仅要传递电子邮件,还要传递不同的实体ID和证书。

在多租户应用程序中,这意味着两个不同的应用程序,但如果您计划允许多个IDP指向单个应用程序,则需要确保相同的电子邮件但不同的entityID创建两个不同的用户并在之后抛出错误第一个被创建,第二个不能提供也不能访问。

答案 1 :(得分:0)

有趣的问题。这些天人们总是想到某些属性的用户自动联合。在早期SAML联合日中联合两个不相关的用户是一个手动步骤,其中用户登录IDP并登录到SP,提供两组凭据,然后手动联合这两个用户帐户。该过程保证只有有权访问IDP和SP帐户的用户才能控制两者之间的联系。它还允许匿名命名标识符(SAML持久性NameIDFormat)来保护隐私,因为即使IDP也不知道SP上的用户名,反之亦然。

不幸的是,这个过程对于用户来说很复杂,而且随着OpenID的成功,这个方面变得越来越不重要。

回答你的问题:你描述的内容发生在现实世界中 - 见Office 365 authentication bypass

您需要检查IDP是否具有权威性,以便在两个IDP的情况下发送特定属性和属性范围。

如果一个IDP必须验证属性(SSOCircle验证电子邮件地址),最好是唯一的(例如SSOCircle userId),以避免具有相同属性的两个用户映射到SP上的单个用户。 如果用户ID不相同(例如,您在SP上使用IDP和电子邮件地址格式的简单用户ID),您仍然可以在SP上添加关联属性(例如,名为ssocircle-userid的属性)并使用该属性进行链接用户帐户。