Asp.net mvc 4 如何调用ADFS安全的Web API函数

Asp.net mvc 4 如何调用ADFS安全的Web API函数,asp.net-mvc-4,wif,Asp.net Mvc 4,Wif,这是我的情况。我有两个不同的Web应用程序(App1、App2),都是WIF和AD FS的实现。它们都有Web API控制器,所有调用都由WIF保护。这意味着,每当我对Web API函数进行未经验证的调用时,它都会重定向到ADFS登录页面。它们都使用相同的AD FS实例,因此单点登录可以工作 但是,这种重定向行为在特定场景中是有问题的。假设我通过应用程序1登录。在应用程序1中,我想使用HttpClient或类似的类调用应用程序2上的WebAPI函数。我的呼叫失败,因为它总是重定向到ADFS 我猜

这是我的情况。我有两个不同的Web应用程序(App1、App2),都是WIF和AD FS的实现。它们都有Web API控制器,所有调用都由WIF保护。这意味着,每当我对Web API函数进行未经验证的调用时,它都会重定向到ADFS登录页面。它们都使用相同的AD FS实例,因此单点登录可以工作

但是,这种重定向行为在特定场景中是有问题的。假设我通过应用程序1登录。在应用程序1中,我想使用HttpClient或类似的类调用应用程序2上的WebAPI函数。我的呼叫失败,因为它总是重定向到ADFS

我猜这是因为我需要以某种方式传递我的安全令牌,但我还不知道如何传递。如果能为我提供帮助,我将不胜感激

TL;DR:我可以通过.NET代码中的客户端调用WIF/ADFS保护的Web API函数吗


谢谢

IMHO意见web api与被动WIF重定向不兼容。这并不意味着你不能保护你的web api;这只是意味着被动场景不适合这种情况。Web api本质上更适合于通过代码从STS获取安全令牌的活动场景,而不是通过浏览器的重定向(在Web api中通常没有任何浏览器)。然后,您需要将安全令牌与web api调用一起传递(通常通过一些http头,如x-authorization),这方面没有标准,但一些好的方法记录在一本书中。这意味着您必须自己编写一些actionfilters来从标头中获取安全令牌。此外,我认为ThinkTecture库为保护web api提供了一些现成的支持。

基于角色的安全和访问控制免费电子书包含有关此和其他wcf相关场景的详细信息。找不到它。。。作者是谁?来吧,