如何使用Active Federation对ASP.NET MVC应用程序进行身份验证?

时间:2015-01-27 18:35:09

标签: asp.net-mvc security authentication wif saml

我有一个WPF应用程序正在使用WCF上的WS-Trust Active Federation。当用户登录时,应用程序从STS请求令牌,缓存它,然后将该令牌提供给需要身份验证的所有WCF服务调用。此应用程序还具有Web浏览器视图,该视图指向提供其他功能的MVC应用程序。我希望能够像使用我的WCF服务一样使用MVC应用程序进行身份验证,并为应用程序提供我用于所有其他服务调用的相同缓存令牌。

我知道如何使用MVC应用程序设置Passive Federation,但是是否可以使用Windows Identity Foundation为MVC应用程序执行Active Federation?

1 个答案:

答案 0 :(得分:1)

不,如果不编写自定义代码,则无法执行此操作。您从STS获得了用于验证服务调用的SAML令牌(我假设您在这里谈论SOAP服务)。您无法在HTTP请求中传递原始SAML令牌以使用WIF授权该呼叫。

ASP.NET MVC使用cookie来保持请求之间的身份验证信息。当STS在成功验证后将SAML令牌发回MVC应用程序时,将设置这些cookie。

您可以做的是在浏览器控件中使用被动模式身份验证,拦截回发并从中提取SAML令牌,然后再将其传递给服务器。然后,您可以在服务调用中使用截获的SAML令牌(假设它们具有相同的依赖方标识符)。

或者,您可以编写自定义身份验证HTTP模块,在该模块中处理通过Authorization HTTP标头传入的SAML令牌。请注意,SAML令牌可能会变得非常大,因为它们通常包含用户所属的所有安全组。