Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在IdpInitiatedLogin SSO之前AD FS刷新令牌_C#_Asp.net_Adfs_Adfs4.0 - Fatal编程技术网

C# 在IdpInitiatedLogin SSO之前AD FS刷新令牌

C# 在IdpInitiatedLogin SSO之前AD FS刷新令牌,c#,asp.net,adfs,adfs4.0,C#,Asp.net,Adfs,Adfs4.0,我使用AD FS中的WS-Federation选项让用户登录到我们的网站(WebsiteA)。现在我们需要对另一个供应商执行SSO。。。比如说WebsiteB 要执行SSO,我只需通过我的AD FS启动IdpInitiatedLogin,用户就可以登录到Web站点B 用户在WebsiteB中通常有2个帐户,每个帐户在WebsiteA中。要登录到WebsiteB中的帐户,我们在IdpInitiatedLogin之前在来自WebsiteA的LDS中设置一个属性。这为WebsiteB设置了一个声明,因

我使用AD FS中的WS-Federation选项让用户登录到我们的网站(
WebsiteA
)。现在我们需要对另一个供应商执行SSO。。。比如说
WebsiteB

要执行SSO,我只需通过我的AD FS启动
IdpInitiatedLogin
,用户就可以登录到Web站点B

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

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


在IdInitiatedLogin过程之前,是否有任何方法刷新SAML/令牌或声明信息,以便用户登录到正确的帐户?

声明不是动态的

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

您可以通过编程方式执行此操作-请参阅

更新

您必须手动登录


如果你的广告属性经常发生变化,那么声明并不是最好的解决方案。你应该通过C#DirectoryServices等网站从广告中获取属性。

感谢nzpcmad的Joel Coehoorn调查了我面临的问题。 为了理解这个主题,我在谷歌上搜索了很多次,但没有找到太多指向它的参考资料

根据我的理解,问题在于一旦登录就缓存属性

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


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

我在这方面没有太多的实践经验,所以我只是抛出一些可能不是很好的想法,因此这只是一个评论。。。但我相信SAML代币基本上就是饼干。如果您可以清除cookie,这将有效地刷新令牌。但最重要的是,我认为SAML并没有很好地支持您想要做的事情。我知道,我为一所小型大学管理一个谷歌应用程序域,允许一名员工同时登录两个谷歌SSO帐户是一件痛苦的事情。我通常会要求需要这样做的人使用两种不同的浏览器。谢谢Joel,事实上,当我看到Cookie中没有任何属于SAML的Cookie。然而,我明白你的意思,但即使刷新也不起作用。在这个特别的地方完全迷失了!感谢nzpcmad,这篇文章让我对注销过程有了很好的了解。但它没有提到我们如何以编程方式注销和登录该用户?您必须点击该URL。好的,我这样做了,它只是将我注销。如何在不询问凭据的情况下重新登录相同的usee..我不能使用网站B上的目录服务作为其第三方供应商。