2015-09-28 185 views
1

我有门户A,为此我使用SP(Azure AD)实现了SAML身份验证。在门户网站A中,我将以门户网站的形式显示Portal B的一些屏幕。跨多个SP的SAML身份验证

门户A和门户B都使用来自同一IDP(Azure AD)的基于SAML的身份验证。

这里的情况是用户登录到Portal A,当试图访问Portal B屏幕显示为Iframe的页面时,他们必须再次启动SAML登录(但是他们不会提示现在输入其凭据 ,因为它们是已经使用SAML身份验证登录到门户A)

我最初的印象是,当Portal A通过IDP身份验证时,它将针对所有使用相同IDP进行身份验证的门户建立SSO。但是现在我明白,它不是如何工作的。

当用户成功通过一个SP进行身份验证时,是否可以为所有使用相同IDP进行身份验证的SP实现SSO,不需要提示使用samle IDP登录所有其他SP?

+0

您的问题描述有点不清楚,但只要用户通过IdP进行身份验证(通常是通过访问第一个SP触发的),就不需要凭证来验证后续SP。 –

+0

那么问题是什么? –

+0

抱歉不清楚。是的,后续SP不需要凭证。但为什么用户应该重定向到后续SP的登录页面呢?在随后的SP上 - 他需要点击登录按钮,然后再次将他带到STS门户,然后只有他成功通过其他SP进行身份验证。虽然他没有被提示重新输入他的凭据,但我想,用户不需要点击后续SP上的登录按钮,就可以直接验证用户而不要求他点击后续sp的登录按钮。 – Dinny

回答

1

SAML身份验证请求中有一个isPassive选项,允许SP检查用户是否在与用户没有任何交互的情况下在IDP上进行身份验证,而不管身份(即身份验证与未身份验证)。见https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf节3.4.1:

IsPassive [可选]
一个布尔值。如果为“真”,则身份提供者 和用户代理本身不能明显地控制来自请求者的用户界面,并且以明显的方式与演示者交互。如果未提供值,则默认为 “false”。

SP可以在不向用户显示是否弹出“登录”按钮的iframe中使用该按钮。如果用户通过身份验证,则会返回SAML响应而不会打扰用户,并且可以创建应用程序会话。如果用户未通过身份验证,则SAML响应将显示该消息,并显示“登录”按钮。

这确实取决于SP知道要问哪个IDP的事实。

没有标准的方式一次性将用户登录到所有SP,但IDP可以在类似于企业门户的情况下实施此类功能,该门户通过IDP启动的SSO SAML响应向SP启动iframe。