将Identity Foundation与WCF Web Api一起使用

Dan*_*ell 3 asp.net ajax wcf identity wif

我有一堆网站设置相同,使用WIF身份提供商.我最近将业务逻辑从Web应用程序转移到Web Api服务应用程序中.它在与其他站点不同的虚拟目录中运行.想法是浏览器将数据放入页面AJAXy.

我遇到的问题是保护Web API.似乎WIF单点登录对传统网站没有效果.用户可以访问一个网站,重定向到身份提供商,登录并重定向回他们想要的网站.当他们访问另一个站点时,他们也会被重定向回身份提供者,但无需登录,因为FEDAUTH cookie存在,因此他们会自动进行身份验证并重定向到第二个站点.

这对于Web Api场景不起作用,因为当浏览器对它进行GET时,Api将返回重定向到调用javascript时应该期待JSON.

甚至可以用WIF保护Web Api吗?

Pet*_*ter 6

不确定我是否帮助你,但似乎主要的问题是javascript/ajax不支持http重定向.一种可能的解决方案是在ajax中使用一系列单独调用来模拟重定向:

  1. 检查您是否在您的web api站点上进行了身份验证(通过虚拟ajax调用).

如果不是这样的话:

  1. 通过ajax调用你的sts并从"wresult"表单字段中获取安全令牌.
  2. 调用web api站点上的登录站点,并将安全令牌作为"wresult"数据传递.

Dominick Bayer撰写了一些关于确保休息服务的博客文章.如需进一步阅读,请浏览http://www.leastprivilege.com/.(特别是http://leastprivilege.com/2009/09/11/adding-a-rest-endpoint-to-a-wif-token-service/http://leastprivilege.com/2010/05/05/thinktecture -identitymodel-wif-support-for-wcf-rest-services-and-odata /).

TechDays的以下演示文稿也可能很有趣:http://www.microsoft.com/showcase/sv/se/details/ffc61019-9756-4175-adf4-7bdbc6dee400(从大约30分钟开始).