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