2011-07-20 32 views
3

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

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

这对Web Api场景不起作用,因为当浏览器可能对它进行GET时,Api将返回重定向到调用JavaScript的时候它应该期待JSON。

它甚至有可能使用WIF来保护Web Api?

回答

6

不知道我是否正确,但它似乎是主要问题是,JavaScript/AJAX不支持HTTP重定向。 一个可能的解决办法是模拟重定向配有独立的呼叫在阿贾克斯的顺序:

  1. 确定你是否在你的web API的网站身份验证(通过一个虚拟的Ajax调用)。

如果是这种情况并非如此:

  1. 打电话给你的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分钟开始)。

相关问题