我的服务器端包含WCF4 REST服务,我将为未来的SL4应用程序添加RIA服务。目前我正在进行这样的基本身份验证:
var auth = HttpContext.Current.Request.Headers.GetValues("Authorization");
等等..你明白了......我在每次请求时都会这样说。如果标题不存在或我无法验证UN /密码 - 我这样做:
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,但是没有关于如何编码和连接它们的示例..
任何人都可以建议我应该走哪条路?
答案 0 :(得分:0)
在最近的SOAP / C#项目中,我使用WCF的内置注释来解决所有类型的问题。我知道这不是最好的解决方案,但出于我的目的,我在IIS7中为我的应用程序启用了基本身份验证,禁用了匿名身份验证,并为调用Web服务端点的外部客户端创建了Active Directory用户。然后我在IIS7中更改了应用程序的权限(它使用文件系统权限)以允许包含这些用户的组。
这会在您的应用程序之外移动身份验证,这可能不是您想要的,但允许您通过IIS7控制台和可以复制这些权限的部署工具轻松添加用户。优点是您无需重新部署应用程序以进行权限更改。缺点是你无法对每个功能进行细粒度的权限控制。
答案 1 :(得分:0)
尝试使用此custom HTTP module。它将向IIS添加新的身份验证模式,它将允许您使用自定义凭据验证。