【发布时间】:2011-10-28 02:55:41
【问题描述】:
上下文:
Stack 和 Bing 上有一些讨论 WCF 和与 ASP.NET 的会话共享的主题。没有一个能完全满足我的问题。所以这里是:
我有一个MVC 站点,它在路径“/services”下的RouteTable 中也有一些服务。这一切都很好。我可以同时调用 Controller 操作和 WCF 服务方法。
我已经使用Windows Azure Access Control Service (ACS) 启用了WIF 和Federated Authentication。这也很好用。我可以使用 Facebook、Google 等登录,并且在我的网站上明确建立了一个会话。我可以调用 MVC 控制器操作和 WCF 方法。在这些主体内部,当前用户的 IPrincipal 设置为我当前的会话。
现在我想成为一个好孩子并使用自定义ClaimsAuthenticationManager and a custom ClaimsAuthorizationManager。现在出现了一个奇怪的问题:
设置:
对于这种情况,我已登录。我有一个会话。我可以在 MVC 控制器方法和 WCF 服务方法的方法体中确认这一点。这意味着我们可以将自定义 ClaimsAuthenticationManager 排除在外,因为当我已经有会话时它不会被触及。
让我头疼的是自定义 ClaimsAuthorizationManager。
当我调用 MVC 站点时,我通过 ClaimsAuthorizationManager.CheckAccess 方法内的会话以及我的 MVC 控制器操作主体内的会话进行身份验证。到目前为止一切顺利。
问题:
当我调用 WCF 服务时,我没有通过 ClaimsAuthorizationManager.CheckAccess 方法内的会话进行身份验证,但是当我在 WCF 服务方法内点击断点时,我(突然)通过了身份验证。
这没有任何意义!看来我的会话没有在 ClaimsAuthorization 管理器内部膨胀,而是在我点击自己的 WCF 代码时,会话就位!
这怎么可能?
干杯,
马格纳斯
【问题讨论】:
-
你能显示你指定 ClaimsAuthorizationManager 类的配置吗?
-
-
我得出的结论是这是一个配置问题。要么我的 WCF 身份验证不正确,要么 ASP.NET 应用程序出现问题,并且 WCF 服务不能很好地协同工作。
标签: wcf asp.net-mvc-3 session wif federated-identity