我有一个 MVC.net 应用程序,它使用 MVC.net 身份提供程序 (IP-1) 进行身份验证。用户登录后,我需要从另一个应用程序(IP-2)获取一些额外的声明。我通过将 token 传递回 IP-2 来完成此操作,IP-2 能够读取 token 并在生成新 token 之前添加其他声明。
当我尝试将新 token 传递给 RP 时,问题就出现了,因为客户端已经通过 RP 进行了身份验证,因此新 token 及其声明将被忽略。
我想我想要做的事情解释如下,但我也意识到我对 WIF 的了解有点不稳定,所以我对事情应该如何运作的假设可能存在一些缺陷。
我的问题是,如何让 RP 使用新 token 重新进行身份验证?另外,是否有更好的方法来添加声明,而无需在 IP-2 应用程序中重新创建 token ?
最佳答案
要接受新的 SAML token ,您需要清除 session Cookie,然后发送新的登录请求。但是……
将 SAML token 从 IP-1 发送到另一个 (IP-2) 从根本上违背了 SAML 和 WS-Fed 设计。 SAML token 适用于 RP。不应该发给别人!!如果 RP 的 SAML token 已加密,则 IP-2 甚至无法读取它。 (当然)没有标准方法将第一个 token 信息添加到第二个身份验证请求。
级联(第一个,然后另一个添加声明)是标准解决方案。在你的情况下,这听起来像是通过 IP-2 重定向到 IP-1。 IP-1 设定了其正常声明。 IP-2 添加其声明,然后最终返回给 RP。
关于c# - MVC.net 中的 WIF - 从第二个 IP 添加附加声明到 SAML token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28156267/