【问题标题】:WIF in MVC.net - Adding Additional Claims to SAML Token from Second IPMVC.net 中的 WIF - 从第二个 IP 向 SAML 令牌添加附加声明
【发布时间】:2015-03-25 05:29:30
【问题描述】:

我有一个 MVC.net 应用程序,它使用 MVC.net 身份提供程序 (IP-1) 进行身份验证。用户登录后,我需要从另一个应用程序 (IP-2) 获得一些额外的声明。我通过将令牌传递回 IP-2 来做到这一点,IP-2 能够在生成新令牌之前读取令牌并添加其他声明。

当我尝试将新令牌传递给 RP 时出现问题,因为客户端已经通过 RP 进行了身份验证,因此忽略了新令牌及其声明。

我认为下面解释了我想要做的事情,但我也知道我对 WIF 的了解有点不稳定,所以我对事情应该如何运作的假设可能存在一些缺陷。

我的问题是,如何让 RP 使用新令牌重新进行身份验证?另外,有没有更好的方法来添加声明,而无需在 IP-2 应用程序中重新创建令牌?

【问题讨论】:

  • 所有声明是否对所有经过身份验证的用户都可用?
  • 不,大部分时间 RP 用户不会使用来自 IP-2 的任何声明。

标签: c# .net asp.net-mvc wif saml


【解决方案1】:

要接受新的 SAML 令牌,您需要清除会话 Cookie,然后发送新的登录请求。但是……

将 SAML 令牌从 IP-1 发送到另一个 (IP-2) 从根本上违反了 SAML 和 WS-Fed 设计。 SAML 令牌适用于 RP。不应该发给别人!!如果 SAML 令牌为 RP 加密,那么 IP-2 甚至无法读取它。并且(当然)没有标准方法可以将第一个令牌信息添加到第二个身份验证请求中。

级联(一个先,然后另一个添加声明)是标准解决方案。在您的情况下,这听起来像是通过 IP-2 重定向到 IP-1。 IP-1 设定其正常要求。 IP-2 添加其声明,然后将最终返回给 RP。

【讨论】:

  • SAML 令牌未准确发送到 IP-2。 IP-2 也是 IP-1 的 RP,它会自己请求令牌。本质上它是同一个令牌,但它是单独发给 IP-2 的。我相信结果是一样的,所以我愿意接受更好的方法来做到这一点。您是否有任何链接到实现级联的最佳方式?你在最后一段中描述的是我想要完成的。
  • 好的,那么你的设置并不像我担心的那样不安全 :-) {我必须保持礼貌} 你快到了。杀掉IP-1的SessionToken就好了。然后重定向到 IP2。那是完美的。但是您需要在 WIF web.config 中信任两个身份提供者(“issuerNameRegistry”中的几个添加元素),并且您需要“手动”(即不自动)重定向到 IdP,因为 WSFAM 只有一个 IdP自动重定向配置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 2021-11-14
  • 2017-05-14
  • 1970-01-01
  • 2011-10-01
  • 2018-02-09
  • 2015-08-14
相关资源
最近更新 更多