IdpInitiatedLogin SSO 之前的 AD FS 刷新令牌



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

要执行 SSO,我只需通过我的 AD FS 启动IdpInitiatedLogin,用户就会登录到网站 B。

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

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

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

声明不是动态的。

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

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

更新

您必须手动登录。

如果您的 AD 属性经常更改,则声明不是最佳解决方案。您应该通过 C# 目录服务等从 AD 获取属性。

感谢 nzpcmad 的 Joel Coehoorn调查我面临的问题。 在对这个话题的理解做了大量的谷歌搜索之后,我没有找到太多指向它的参考资料。

根据我的理解,问题出在登录后的属性缓存。

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

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

最新更新