启用HTTPS的IIS托管WCF服务,如何保护它?

贾斯汀·范·比伯(Justin Van Bibber)

我已经构建了一个相当简单的WCF服务,该服务托管在IIS 7.5实例上。我已经完成了必要的步骤来保护ssl证书以启用https。我已经解决了所有各种DNS设置,因此现在可以从世界各地的给定Https:// URL进入WCF了。目标是:为大约5个将向该服务发送数据的客户端进行某种客户端/服务器身份验证。确保这项服务的最佳方法是什么?此时,只有一种方法非常简单。我确定web.config以及背后的代码都会有所变化。实例不胜感激。

这是Web.config

<!-- language: lang-xml -->
    <?xml version="1.0"?>
<configuration>

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>

  <services>
    <service name="wcflistener.Service1">
      <endpoint address=""           
      binding="basicHttpBinding"
      bindingConfiguration="secureHttpBinding"
      contract="wcflistener.IService1"/>

      <endpoint address="mex"
      binding="mexHttpsBinding"
      contract="IMetadataExchange" />
    </service>
  </services>

  <bindings>
    <basicHttpBinding>
      <binding name="secureHttpBinding">
        <security mode="Transport">
          <transport clientCredentialType="None"/>
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>

    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <!--
    To browse web app root directory during debugging, set the value below to true.
    Set to false before deployment to avoid disclosing web app folder information.
    -->
    <directoryBrowse enabled="true"/>
  </system.webServer>

</configuration>

和非常简单的Service1.svc.cs

 [DataContract]
public class Service1 : IService1
{


    public void SampleMethod(DataTable table, string name)
    {
        //sample method logic here
    } 
}
拉贾·纳达尔(Raja Nadar)|

使用WCF,您可以使用几种安全选项,各有其优缺点:

  1. SSL + Windows身份验证的使用。(这对于Internet托管服务通常很困难,因为每个人都需要与同一个域控制器进行对话)
  2. SSL +用户名/密码:WCF可以轻松地实现此目的,客户端传递用户名/密码,并且服务可以使用预先配置的值来验证值,并允许客户端进一步使用。
  3. 基于证书的身份验证:通常,可以为客户端提供服务器证书的公钥,以便他们可以使用该证书来调用服务。但是,这不能完全识别客户端。任何人都可以获取您的公钥。
  4. 双向证书或双向SSL:这是客户端拥有私钥并将公钥提供给服务的时间。反之亦然,即服务将其公钥提供给客户端。

这取决于您需要的身份验证级别。对于很少的客户,用户名/密码就足够了。(始终有失去这些风险)

对于主要客户2 SSL非常安全,因为人们不会轻易丢失私钥。

根据您的选择,可以共享其他代码示例。

对于选项#,请单击此链接。(您可以在以下步骤中使用SSL证书)

http://codebetter.com/petervanooijen/2010/03/22/a-simple-wcf-service-with-username-password-authentication-the-things-they-don-t-tell-you/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在WCF服务中启用HTTPS

来自分类Dev

如何在WCF RESTful服务上启用HTTPS?

来自分类Dev

从Linux Web应用程序使用IIS托管的WCF服务

来自分类Dev

托管在VS2010中在IIS上创建的WCF服务

来自分类Dev

如何设置WCF自托管REST服务?

来自分类Dev

如何在IIS中托管没有SVC文件的WCF服务

来自分类Dev

IIS托管的WCF服务可以执行后台任务吗?

来自分类Dev

IIS托管的WCF服务返回HTTP 400错误请求

来自分类Dev

IIS中托管的WCF服务库的log4net

来自分类Dev

WCF:在IIS和Windows服务中托管之间的区别

来自分类Dev

在IIS上托管时,启用Ajax的WCF服务返回错误500

来自分类Dev

如何基于OAuth保护WCF Rest服务

来自分类Dev

WCF服务托管技术

来自分类Dev

无法使用WCF服务(托管在IIS中)

来自分类Dev

如何使用Java脚本使用Windows服务托管的WCF服务

来自分类Dev

无法使用soapclient从php访问iis上托管的wcf服务

来自分类Dev

IIS中托管的WCF服务中的DbContext生命周期

来自分类Dev

IIS托管WCF服务和AppDomain

来自分类Dev

如何在不使用app.config的情况下通过https自托管WCF REST XML服务?

来自分类Dev

IIS托管的WCF服务可以执行后台任务吗?

来自分类Dev

在WCF服务运行之前如何运行IIS?

来自分类Dev

向用户公开IIS中托管的WCF服务

来自分类Dev

如何使用IIS上托管的wsHttpBinding配置WCF服务并通过Web消耗它?

来自分类Dev

无法在IIS中正确托管WCF服务。错误404

来自分类Dev

如果服务托管在IIS上,如何修改WCF服务配置?

来自分类Dev

在iis7中托管net.tcp wcf服务

来自分类Dev

IIS 托管的 WCF 服务无法启动进程

来自分类Dev

仅托管在 HTTPS 上时的 RESTful WCF 服务错误

来自分类Dev

如何在 IIS 中启用 https?

Related 相关文章

热门标签

归档