我有一个MVC Web应用程序,通过Azure ACS授权用户。现在我希望我的Web应用程序调用我的WCF服务。由于这些服务可以被其他应用程序调用,我希望它们也可以通过ACS进行保护。我对如何设置它感到茫然。我可以以某种方式在WCF服务调用中重用安全令牌吗?
答案 0 :(得分:4)
正式你不能,因为这些是2个不同的(自主)“应用程序”。代币是针对特定应用程序(或“依赖方”)颁发的。您的网站应该为Web服务请求第二个令牌。您有两个选择:
1-只需获得服务标识下的令牌(即网站假定的身份),并将其附加到您对Web服务的调用。 WCF绑定支持这种开箱即用(尽管很复杂,与任何WCF配置一样),。
2-“代表”原始用户获取WCF令牌。这是一个委派方案,其中Web应用程序的原始调用方的身份将传输到服务。
第一个选项相当简单(将WCF细节放在一边)。第二个选项更加复杂,在ACS中不受支持(据我所知),因为它需要一个能够理解并发布 ActAs 令牌的特殊终端。
如果您拥有这两个网站,那么可以对网站和服务使用相同的令牌,并且是“相同的应用”。这是一个实用的快捷方式而不是纯粹的实现,并且可能有其他含义(例如,ACS中的相同应用程序,WCF无法轻易区分它是从您的网站或外部方进行调用等)。
在这种情况下,MVC应用程序必须保留发送给它的令牌。有一个设置(bootstraptoken = true)。 .NET 4.5中的WIF API发生了一些变化,因此可能还有其他内容。