0

我的服务器端包含 WCF4 REST 服务,我将为我未来的 SL4 应用程序添加 RIA 服务。目前我正在做这样的基本身份验证:

var auth = HttpContext.Current.Request.Headers.GetValues("Authorization");

等等..你明白了..我在每次请求时都会调用它。如果标题不存在或者我无法验证 UN/Password - 我这样做:

outgoingResponse.Headers.Add("WWW-Authenticate: Basic realm=\"Secure Area\"");

到目前为止,这让我受益匪浅,但我正在重构我的服务器端。为链接服务实施 IoC。创建了自定义 ServiceHost、ServiceHostFactory、InstanceProvider,一切都很好。

现在我需要弄清楚如何使用 WCF 正确处理身份验证和授权,这样我就不必手动检查标头。我确实有我的自定义 MembershipProvider 所以必须有一些方法来处理 UN/PW。

任何指针?我查看了http://www.codeproject.com/KB/WCF/BasicAuthWCFRest.aspx但它使用 RequestInterceptor 并且在 WCF4 中不可用。我找到了 ServiceAuthenticationManager 和 ServiceAuthorizationManager 但没有关于如何编码和连接它们的示例。

有人可以建议我应该走哪条路吗?

4

2 回答 2

0

在最近的一个 SOAP/C# 项目中,我使用 WCF 的内置注释遇到了所有类型的问题。我知道这不是最好的解决方案,但出于我的目的,我在 IIS7 中为我的应用程序启用了基本身份验证,禁用了匿名身份验证,并为调用 Web 服务端点的外部客户端创建了 Active Directory 用户。然后我在 IIS7 中更改了应用程序的权限(它使用文件系统权限)以允许包含这些用户的组。

这会将身份验证移到您的应用程序之外,这可能不是您想要的,但确实允许您通过 IIS7 控制台和可以复制这些权限的部署工具轻松添加用户。优点是您不必为权限更改重新部署应用程序。缺点是您不能对每个函数进行细粒度的权限控制。

于 2011-08-18T04:10:23.813 回答
0

尝试使用这个自定义 HTTP 模块。它将向 IIS 添加新的身份验证模式,并允许您使用自定义凭据验证。

于 2011-08-18T08:32:57.287 回答