我有一个通过Azure ACS授权用户的MVC web应用程序。现在,我希望我的web应用程序调用我的WCF服务。由于这些服务可以被其他应用程序调用,因此我也希望通过ACS来保护它们。我不知道如何设置它。我能以某种方式在我的WCF服务调用中重用安全令牌吗?
发布于 2013-07-08 01:35:39
在形式上你不能,因为这是两个不同的(自主的)“应用程序”。令牌是为特定的应用程序(或“依赖方”)颁发的。您的网站应为web服务请求第二个令牌。您有两个选项:
1-只需在服务标识(即网站假定的标识)下获取一个令牌,并将其附加到对web服务的调用中。WCF绑定支持这种开箱即用的方式(尽管复杂,就像任何WCF配置一样)。
2-“代表”原始用户获取WCF的令牌。这是一个委托场景,其中web应用程序的原始调用者的身份被传输到服务。
第一种选择相当简单(抛开WCF的细节不谈)。第二种选择更复杂,在ACS中不受支持(据我所知),因为它需要一个特殊的端点来理解并发布ActAs令牌。
如果您拥有网站和服务,并且是“同一个应用程序”,则可以对两者使用相同的令牌。这是一个实用的捷径,而不是一个纯粹的实现,可能会有其他影响(例如,ACS中的同一个应用程序,WCF不能很容易地区分它是从你的网站还是外部方调用的,等等)。
在这种情况下,MVC应用程序必须保留发送给它的令牌。对此有一个设置(bootstraptoken=true)。.NET 4.5中的WIF有一点变化,所以可能会有一些其他的变化。
https://stackoverflow.com/questions/17512527
复制相似问题