1

我有一个通过 Azure ACS 授权用户的 MVC Web 应用程序。现在我希望我的 Web 应用程序调用我的 WCF 服务。由于这些服务可以被其他应用程序调用,我希望它们也可以通过 ACS 得到保护。我不知道如何设置它。我可以以某种方式在我的 WCF 服务调用中重用安全令牌吗?

4

1 回答 1

4

形式上你不能,因为这些是 2 个不同的(自治的)“应用程序”。令牌是为特定应用程序(或“依赖方”)发行的。您的网站应该为 Web 服务请求第二个令牌。您有 2 个选项:

1- 只需在服务身份(即网站假定的身份)下获取一个令牌,并将其附加到您对 Web 服务的调用中。WCF 绑定开箱即用地支持这一点(尽管与任何 WCF 配置一样复杂)。

2-“代表”原始用户获取 WCF 令牌。这是一个委托方案,其中将 Web 应用程序的原始调用者的身份转移到服务。

第一个选项相当简单(撇开 WCF 细节不谈)。第二个选项更复杂,ACS 不支持(据我所知),因为它需要一个特殊的端点来理解和发布ActAs令牌。

如果您拥有两者并且是“同一个应用程序”,则您可以对网站和服务使用相同的令牌。这是一个实用的捷径,而不是纯粹的实现,并且可能有其他含义(例如 ACS 中的同一个应用程序,WCF 无法轻易区分它是从您的网站或外部方调用的,等等)。

在这种情况下,MVC 应用程序必须保留发送给它的令牌。有一个设置(bootstraptoken=true)。.NET 4.5 中的 WIF API 发生了一些变化,因此可能还有其他内容。

于 2013-07-07T17:35:39.283 回答