【问题标题】:How to call an ADFS secured Web API function如何调用 ADFS 安全的 Web API 函数
【发布时间】:2014-03-14 19:05:33
【问题描述】:

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

但是,这种重定向行为在特定情况下是有问题的。假设我通过 App 1 登录。从 App 1,我想使用 HttpClient 或类似类在 App 2 上调用 WebAPI 函数。我的电话失败了,因为它总是被重定向到 ADFS

我猜这是因为我需要以某种方式传递我的安全令牌,但我还没有弄清楚如何。任何有关我如何做到这一点的帮助将不胜感激。

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

谢谢!

【问题讨论】:

标签: asp.net-mvc-4 wif


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多