【问题标题】:Custom "Basic" Authentication for my WCF services. REST and RIA. Possible?我的 WCF 服务的自定义“基本”身份验证。休息和RIA。可能的?
【发布时间】:2011-08-18 03:45:12
【问题描述】:

我的服务器端包含 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,但是没有关于如何编码和连接它们的示例。

谁能建议我应该走哪条路?

【问题讨论】:

    标签: wcf authentication wcf-ria-services wcf-4


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 2011-01-13
        • 2011-08-26
        • 2012-12-24
        相关资源
        最近更新 更多