我正在构建一个 Web 服务,该服务需要可供各种潜在平台访问,包括许多较旧的 ASP 和 ASP .NET 应用程序。经过一番研究后,我选择了同时具有 REST (webHttpBinding) 和 SOAP (wsHttpBinding) 端点的 WCF 服务(这样,我可以支持广泛的平台,并且仍然能让 .NET 编码人员满意)。
为了安全起见,我对我自己的用户名/密码数据库使用 SSL 和 HTTP 基本身份验证。因此,我编写了一个 HttpModule 来处理用户名和密码并检查 SSL。现在,REST 设置工作正常,但 SOAP 端点出现问题。无论我使用什么设置,SOAP 客户端都不会向我发送可用于身份验证的 WWW-Authorization header 。我假设设置类似 <message clientCredentialType="UserName" />
应该告诉 WCF 我需要一个授权 header ,并且 Visual Studio(或任何客户端)在创建 Web 引用时将拾取该信息。也许我只是太天真了。
总结一下这个问题:有什么方法可以告诉 WCF 向我发送 WWW-Authorization header (即 HTTP 基本 header )以及 SOAP 消息吗?
最佳答案
您可以为身份验证创建自定义 header 。
看看here
关于具有 Http 基本身份验证的 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2074361/