0

我正在使用 AD FS 中的 WS 联合选项让用户登录我们的网站 ( WebsiteA)。现在我们需要对另一个供应商进行 SSO ......让我们说WebsiteB

要执行 SSO,我只需IdpInitiatedLogin通过我的 AD FS 启动,然后用户登录到 WebsiteB。

用户通常在 WebsiteA 中的每个帐户在 WebsiteB 中拥有 2 个帐户。要登录到 WebsiteB 中的帐户,我们在 IdpInitiatedLogin 之前从 WebsiteA 设置 LDS 中的属性。这为 WebsiteB 设置了一个声明,因此它知道要使用哪个帐户。

问题是当我们在 LDS 中的同一属性中设置不同的值时,它不会在 SAML 的声明信息中刷新,如 websiteB 所示。

有没有办法在 IdpInitiatedLogin 进程之前刷新 SAML/令牌或声明信息,以便用户登录到正确的帐户?

4

2 回答 2

1

索赔不是动态的。

您必须注销/登录才能刷新它们。

您可以以编程方式执行此操作 - 请参阅https://social.technet.microsoft.com/wiki/contents/articles/1439.ad-fs-how-to-invoke-a-ws-federation-sign-out.aspx

更新

您必须手动登录。

如果您的广告属性经常变化,则声明不是最佳解决方案。您应该通过 C# DirectoryServices 等从 AD 获取属性。

于 2017-08-26T05:33:37.570 回答
0

感谢 nzpcmad 的 Joel Coehoorn调查我所面临的问题。在进行了大量谷歌搜索以了解该主题之后,我没有找到太多指向它的参考资料。

据我了解,问题在于您登录后的属性缓存。

为了解决这个问题,我使用了自定义属性存储(使用 SQL 数据库)。每次启动IDPInitiatedSignIn时,它都会查询数据库。或者说每次发送该声明(使用自定义声明)。

对于像我这样可能面临同样问题的其他开发人员,我在这里发布我的解决方案。希望能帮助到你 :)

于 2017-09-04T06:51:52.310 回答