首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在BasicHttpBinding中的WCF服务中进行身份验证?

在BasicHttpBinding中的WCF服务中进行身份验证,可以使用以下方法:

  1. 使用用户名和密码进行身份验证:

在客户端代理类中,设置用户名和密码,并在服务端配置身份验证。

客户端代码:

代码语言:csharp
复制
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;

EndpointAddress endpointAddress = new EndpointAddress("http://localhost:8000/ServiceModelSamples/Service");

ChannelFactory<ICalculator> channelFactory = new ChannelFactory<ICalculator>(binding, endpointAddress);
channelFactory.Credentials.UserName.UserName = "username";
channelFactory.Credentials.UserName.Password = "password";

ICalculator client = channelFactory.CreateChannel();

服务端配置:

代码语言:xml<system.serviceModel>
复制
  <bindings>
   <basicHttpBinding>
     <binding name="secureBinding">
       <security mode="TransportCredentialOnly">
         <transport clientCredentialType="Basic" />
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>
 <services>
   <service name="MyService">
     <endpoint address="" binding="basicHttpBinding" bindingConfiguration="secureBinding" contract="ICalculator" />
    </service>
  </services>
  <behaviors>
   <serviceBehaviors>
      <behavior>
       <serviceCredentials>
          <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="MyNamespace.CustomUserNameValidator, MyAssembly" />
        </serviceCredentials>
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>
  1. 使用证书进行身份验证:

在客户端代理类中,设置证书,并在服务端配置身份验证。

客户端代码:

代码语言:csharp
复制
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;

EndpointAddress endpointAddress = new EndpointAddress("http://localhost:8000/ServiceModelSamples/Service");

ChannelFactory<ICalculator> channelFactory = new ChannelFactory<ICalculator>(binding, endpointAddress);
channelFactory.Credentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "client.com");

ICalculator client = channelFactory.CreateChannel();

服务端配置:

代码语言:xml<system.serviceModel>
复制
  <bindings>
   <basicHttpBinding>
     <binding name="secureBinding">
       <security mode="Transport">
         <transport clientCredentialType="Certificate" />
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>
 <services>
   <service name="MyService">
     <endpoint address="" binding="basicHttpBinding" bindingConfiguration="secureBinding" contract="ICalculator" />
    </service>
  </services>
  <behaviors>
   <serviceBehaviors>
      <behavior>
       <serviceCredentials>
         <serviceCertificate findValue="MyServiceCertificate" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />
         <clientCertificate>
           <authentication certificateValidationMode="PeerOrChainTrust" />
          </clientCertificate>
        </serviceCredentials>
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

这样,就可以在BasicHttpBinding中的WCF服务中进行身份验证了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用WCF进行跨平台开发之二(IIS托管WCF服务并使用php平台调用)1.系统必备2.在IIS中托管WCF服务3.使用PHP调用托管在IIS中的WCF服务

上一篇中,使用控制台托管了WCF服务,但是如果想从PHP和java平台调用,必须将其托管到IIS中(并不是必须的,还是有其他的方式的 比如windows azure) 1.系统必备      首先,必须打开...2.在IIS中托管WCF服务      在IIS默认网站中添加应用程序emp,并在高级设置中,设置应用程序池为“ASP.NET v4.0”,并设置默认网站右键--编辑版定,在http类型中编辑IP地址和主机名...在新建的虚拟目录对应的实际目录中,添加web.config文件,配置wcf服务和终结点,并打开元数据公开,然而,因为这里不是使用常用的svc文件托管的服务,所以需要serviceActivations节点配置服务...3.使用PHP调用托管在IIS中的WCF服务 在PHP服务器中打开浏览器,并浏览http://192.168.11.1/emp/EmployeeManagement.svc测试服务是否托管正常。 ?...> 开启php服务器,访问页面,出结果: ? 下一章将续写java访问WCF服务的具体操作,可是已经到饭点啦。先做个决定。。。。。

2.1K70
  • WCF技术我们应该如何以正确的方式去学习掌握

    阿笨的回答就是:"取其精华"+"抽丝剥茧",千万不要"囫囵吞枣",最终导致“因噎废食”,这里阿笨给出的建议是学习下面几种绑定: 1)、BasicHttpBinding: 最简单的绑定类型,通常用于 Web...三、C# WCF如何通过优雅的方式进行统一入口调用 采用WCF服务代理工厂(WCFServiceProxyFactory),通过服统一入口给我们的调用者提供的服务吧。...四、WCF技术我们怎么保证客户端调用的安全性? 阿笨的回答是:采用WCF的X509证书身份验证机制。...五、实战演练之C# WCF如何通过优雅的方式进行统一入口调用) 客户端调用WCF服务可以通过添加服务引用的方式添加,这种方式使用起来比较简单,适合小项目使用。...服务端与服务端的耦合较深,而且添加服务引用的方式生成一大堆臃肿的文件。 本例探讨一种使用接口的方式使用WCF服务,克服通过服务引用方式产生的弊端。同时希望抛砖引玉,探讨更好的方式使用WCF。 ?

    46820

    WCF 4.0中的动态发现服务WS-Discovery

    WCF 3/3.5 中,当我们要调用一个服务时,必须事先知道该服务的地址,然后通过服务代理用双方约定好的契约与远程的服务进行交互。...现在,WCF 4.0中提供了发现服务的支持,当我们再想调用一个服务时,没必要去知道该服务的具体地址,WCF 4.0实现了OASIS的WS-Discovery标准,相关的类定义在System.ServiceModel.Discovery...只需要利用 System.ServiceModel.Discovery 命名空间下的相关类就可以实现两种方式的动态发现服务: Ad hoc Mode:简单理解,就是服务启动时就向网络广播Hello消息,...调用方收到后进行回应建立通讯的模式。...WCF 4.0中要动态发现服务,用 Ad hoc Mode 实现起来还是比较简单的。

    97150

    WCF技术剖析之二十: 服务在WCF体系中是如何被描述的?

    任何一个程序都需要运行于一个确定的进程中,进程是一个容器,其中包含程序实例运行所需的资源。同理,一个WCF服务的监听与执行同样需要通过一个进程来承载。...服务寄宿的方式大体分两种:一种是为一组WCF服务创建一个托管的应用程序,通过手工启动程序的方式对服务进行寄宿,所有的托管的应用程序均可作为WCF服务的宿主,比如Console应用、Windows Forms...无论采用哪种寄宿方式,在为某个服务创建ServiceHost的过程中,WCF框架内部会执行一系列的操作,其中最重要的步骤就是为服务创建服务描述(Service Description)。...在本篇文章中,我们将对服务描述进行全面的介绍。...客户端行为体现的是WCF如何进行服务调用的方式,而服务端行为则体现了WCF的请求分发方式。

    1K60

    WCF系统内置绑定列表与系统绑定所支持的功能

    WCF系统内置绑定列表 绑定 配置元素 说明 传输协议 编码格式 BasicHttpBinding 一个绑定,适用于与符合 WS-Basic Profile的Web...服务(例如基于 ASP.NET Web 服务(ASMX)的服务)进行的通信。...此绑定使用HTTP作为传输协议,并使用文本/XML作为默认的消息编码 HTTP/HTTPS Text,MTOM WSHttpBinding 一个安全且可互操作的绑定,适合于非双工服务约定...SOAP媒介进行的通信 HTTP Text,MTOM WSFederationHttpBinding 一个安全且可互操作的绑定,支持WS联合协议并使联合中的组织可以高效地对用户进行身份验证和授权...并支持联合安全性 HTTP/HTTPS Text,MTOM NetTcpBinding 一个安全且经过优化的绑定,适用于WCF应用程序之间跨计算机的通信 TCP Binary

    65410

    WCF中的Binding模型之六(完结篇):从绑定元素认识系统预定义绑定

    还需要基于多次服务访问的事务(将多次服务调用纳入同一个事务之中);不仅仅需要基于单一平台的事务支持,还需要跨平台的事务(比如将基于.NET平台的WCF服务调用和基于J2EE平台的Web服务调用纳入同一个事务中...接下来我们要介绍的另外三种绑定,相比之下就不具有如此好的互操作性,它们只能应用于单纯的WCF客户端和服务之间的交互。...该模式通过传输安全保障数据的一致性和保密性,通过消息安全提供身份验证。关于不同种类的安全模式,将在“安全”一章中进行详细讲解。...WCF中的绑定模型: [WCF中的Binding模型]之一: Binding模型简介 [WCF中的Binding模型]之二: 信道与信道栈(Channel and Channel Stack) [WCF...中的Binding模型]之三:信道监听器(Channel Listener) [WCF中的Binding模型]之四:信道工厂(Channel Factory) [WCF中的Binding模型]之五:绑定元素

    930100

    菜菜从零学习WCF三(配置服务)

    配置服务的类型     --使用配置文件配置     --在代码中强制配置     实际上,编写配置是WCF应用程序编程的主要部分。   ...--可使用.NET Framework配置技术对WCF服务进行配置。通常情况下,向承载WCF服务的Intrnet信息服务(IIS)网站的Web.config文件添加XML元素。...配置绑定   绑定是用于指定连接到Windows Communication Foundation(WCF)服务终结点所必需的通信详细信息的对象。WCF服务中的每个终结点都要求正确指定绑定。   ...绑定最起码必须指定要使用的传输(如Http或TCP)。还可以通过绑定来设置其他特征,如安全和事务支持。   绑定中的信息可能非常基本,也可能非常复杂。...最基本的绑定仅指定必须用于连接到终结点的传输协议(如Http).一般来说,绑定包括的有关如何连接到终结点的信息属于以下类别中的一种。

    80210

    wcf负载均衡简易方案

    想到自己项目中服务用的WCF技术,于是就想WCF如何做负载均衡,Google了一会,发现wcf4.0的路由服务好像可以实现。不过在研究路由服务期间,我有了个自己的方案,哈哈。...我要在客户端跟WCF服务中间部署一台WCF平衡服务器,用来分发请求,模拟nginx的工作。 ? WCF平衡服务器我同样用WCF来实现,所有服务接口全部通过平衡服务区暴露给客户端。...构造函数调用基类的构造函数,传入服务名称。Add实现直接调用基类的方法。 模拟: 1.wcf服务器寄宿 WCF服务可以寄宿在多个方案下面,IIS,win服务,控制台。这里为了方便直接寄宿在控制台下。...新建2个控制台程序,一个寄宿普通的wcf服务。一个寄宿wcf平衡服务。代码不表,给出服务地址。 3个普通的服务。...:8083/Wcf 平衡服务 http://localhost:8088/WcfBalance 配置文件 在平衡服务器的配置文件中定义所有后台服务器的endpoint,然后在自定义wcfBalance节点中配置

    54110

    简易WCF负载均衡方案

    想到自己项目中服务用的WCF技术,于是就想WCF如何做负载均衡,Google了一会,发现wcf4.0的路由服务好像可以实现。不过在研究路由服务期间,我有了个自己的方案,哈哈。...我要在客户端跟WCF服务中间部署一台WCF平衡服务器,用来分发请求,模拟nginx的工作。 WCF平衡服务器我同样用WCF来实现,所有服务接口全部通过平衡服务区暴露给客户端。...构造函数调用基类的构造函数,传入服务名称。Add实现直接调用基类的方法。 模拟: 1.wcf服务器寄宿 WCF服务可以寄宿在多个方案下面,IIS,win服务,控制台。这里为了方便直接寄宿在控制台下。...新建2个控制台程序,一个寄宿普通的wcf服务。一个寄宿wcf平衡服务。代码不表,给出服务地址。 3个普通的服务。...:8083/Wcf 平衡服务 http://localhost:8088/WcfBalance 配置文件 在平衡服务器的配置文件中定义所有后台服务器的endpoint,然后在自定义wcfBalance节点中配置

    46030

    消息的保护等级

    到目前为止,对于WCF安全传输的三个方面,我们已经对认证进行了详细的介绍,现在我们来关注另外两个话题:消息的一致性和机密性,两者又统称为消息保护(Message Protection)。...要确保消息保护机制的正常进行,客户端和服务双方需要首先在保护级别上达成一致,双方按照这个约定完成属于各自的工作。...,有时候我们仅仅需要对消息中包含敏感信息的某个部分进行签名或者加密,那么就需要通过消息契约的方式定义整个消息的结构了。...那么,如果我们在这些特性中设置了不同的保护级别,它们之间具有怎样的优先级?WCF又采用怎样的策略来决定最终的消息保护级别呢? 定义消息保护级别的六个特性分别位于如下图所示的层次结构的四个层次中。...三、绑定采用怎样的消息保护级别? 上面我们着重在介绍如何在契约上定义消息的保护级别,接下来我们将关注点放在绑定上面。我们主要关注两个问题:第一、在默认的情况下绑定采用怎样的保护级别?

    884110

    默认终结点

    但是对于WCF来说,在进行服务寄宿的时候,你必须以编程或者配置的方式为服务添加至少一个终结点,而终结点需要具备基本的ABC三要素。...,在不提供任何配置文件的情况下调用如下的代码对服务进行自我寄宿。...在本例中,服务GreetingService实现了两个服务契约,在寄宿过程中又为它指定了两个基地址,所以最终被自动创建的默认终结点是四个。...这实际代表了默认的协议绑定映射关系,这也是为什么在上面的例子中基于HTTP协议的默认终结点会采用BasicHttpBinding作为绑定类型的原因。...当这个方法被调用的时候,WCF会按照我们之前介绍的策略(为指定的每一个基地址和服务实现的契约的组合添加一个终结点,终结点绑定的类型决定于配置)进行默认终结点的添加。

    77860

    ASP.NET中使用HttpWebRequest调用WCF

    最近项目需要和第三网站进行数据交换,第三方网站基本都是RESTfull形式的API,但是也有的是Web Service,或者.NET里面的WCF。微软鼓励大家使用WCF替代Web Service。...因此,他们决定以面向服务的方式来创建此应用程序,并通过定义完善的一组服务,将此应用程序的逻辑公开给其他软件。为了实现这些服务并使之与其他软件进行通信,这一新应用程序将使用 WCF。 ?...在WcfService_Client的引用文件夹右键,如下图所示,点击“添加服务引用”。 ? 第3步 如果自己项目中WCF服务不是非常多,可以点击“发现”,如果知道WCF项目的发布地址也是可以的。...如果对方也是WCF写的服务端的话,可以进入如下图所示界面,然后点击以”?wsdl”结尾的链接。 ? 可以看到是一个xml文件,里面有一个 ?...可以把WCF项目放在IIS里面,或者使用IIS Express进行调试。

    2.4K90

    asmx迷10分钟升级成wcf熟手指南

    1.2 wcf的创建方式 新建项-->Wcf服务 ? 二、方法定义上的区别 2.1 asmx中的方法定义 ?...2.2 wcf 中的方法定义 这里先啰嗦一下,默认情况下创建一个wcf服务(比如HelloWorld2.svc文件)后,vs.net会自动创建一个IHelloWorld2.cs的接口,然后HelloWorld2...即: a)在需要暴露的class前加上[ServcieContract]标签 b)在需要暴露的Method前加上[OperationContract]标签 三、客户端服务引用方式的变化 实际开发中,通常...继续点击"添加服务引用",下面这个界面应该再熟悉不过了吧 ? 点击"此解决方案中的Web服务",选择HelloWorld.asmx,Web引用名填写成"YJM"(当然也可以自己随便写) ?...name="BasicHttpBinding_HelloWorld2" /> 注:部署到生产环境后,只要修改配置文件中的

    79320

    WCF入门学习(3)

    废话不多说,前两集大致介绍了一下什么是WCF以及和WCF相关的WebService和.net Remoting的一些东西,今天主角要上场,开始WCF的实现相关的东西。...这一集主要有以下四个点 创建一个WCF服务 用一个控制台程序来托管这个服务 提供两个Endpoint 创建一个windows 和一个 Web客户端程序 先上一张上一集的图, 从图中可以看到...至此,创建工作就已完成,接下去就是在控制台程序中托管这个服务。需要说明一点,WCF的托管对象可以是Winform,Console ,或者IIS,或者windows 服务以及其他。...然后会得到如下的引用目录。 为了托管这个WCF服务,我们需要给项目添加一个配置文件,用于托管这个WCF服务。...中的WSDL,用来描述服务的操作很消息。

    43420

    【Java】已解决:System.ServiceModel.EndpointNotFoundException

    以下是一个典型场景: 场景:在一个WCF项目中,客户端尝试调用一个远程服务,但由于配置错误或服务不可用,抛出了EndpointNotFoundException。...二、可能出错的原因 导致System.ServiceModel.EndpointNotFoundException报错的原因主要有以下几点: 服务未启动:WCF服务未启动或由于故障停止运行。...三、错误代码示例 以下是一个可能导致该报错的代码示例,并解释其错误之处: BasicHttpBinding binding = new BasicHttpBinding(); // 错误的地址配置 EndpointAddress...以下是正确的代码示例: BasicHttpBinding binding = new BasicHttpBinding(); // 正确的地址配置 EndpointAddress address = new...五、注意事项 在编写和使用WCF客户端时,需要注意以下几点: 正确配置服务地址:确保客户端配置的服务端点地址与实际服务地址匹配。 检查服务状态:在客户端调用之前,确保WCF服务已经启动并正常运行。

    12310
    领券