2

语境:

Stack 和 Bing 上有一些讨论WCF和与ASP.NET的会话共享的线程。没有一个能完全满足我的问题。所以这里是:

我有一个MVC站点,它在路径“/services”下的RouteTable中也有一些服务。这一切都很好。我可以同时调用控制器操作和 WCF 服务方法。

我已使用Windows Azure 访问控制服务 (ACS)启用WIF联合身份验证。这也很好用。我可以使用 Facebook、Google 等登录,并且在我的网站上明确建立了一个会话。我可以调用 MVC 控制器操作和 WCF 方法。在这些主体内部,当前用户的 IPrincipal 设置为我当前的会话。

现在我想成为一个好孩子并使用自定义ClaimsAuthenticationManager 和自定义 ClaimsAuthorizationManager。现在出现了一个奇怪的问题:


设置:

对于这种情况,我已登录。我有一个会话。我可以在 MVC 控制器方法和 WCF 服务方法的方法体中确认这一点。这意味着我们可以将自定义 ClaimsAuthenticationManager 排除在外,因为当我已经有一个会话时它不会被触及。

让我头疼的是自定义 ClaimsAuthorizationManager。

当我调用 MVC 站点时,我通过 ClaimsAuthorizationManager.CheckAccess 方法内的会话以及 MVC 控制器操作的主体内的会话进行身份验证。到目前为止,一切都很好。


问题:

当我调用 WCF 服务时,我没有在 ClaimsAuthorizationManager.CheckAccess 方法内使用我的会话进行身份验证,但是当我在 WCF 服务方法内点击断点时,我(突然)通过了身份验证。

这没有任何意义!看来我的会话没有在 ClaimsAuthorization 管理器内部膨胀,而是在我点击自己的 WCF 代码时,会话就位!

怎么会这样?

干杯,

马格努斯

4

1 回答 1

0

It might be the Stackoverflow's problem, but when I copied your config into notepad++ I saw some junk characters in the AuthenticationManager type value:enter image description here.

As the rest of the question goes, do you have <clear /> element before the elements that you show here?

于 2011-08-24T19:25:05.940 回答