首页
学习
活动
专区
工具
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调用托管在IISWCF服务

上一篇,使用控制台托管了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调用托管在IISWCF服务 在PHP服务打开浏览器,并浏览http://192.168.11.1/emp/EmployeeManagement.svc测试服务是否托管正常。 ?...> 开启php服务器,访问页面,出结果: ? 下一章将续写java访问WCF服务具体操作,可是已经到饭点啦。先做个决定。。。。。

2K70

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

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

44720

WCF 4.0动态发现服务WS-Discovery

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

93750

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

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

96360

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

WCF系统内置绑定列表 绑定 配置元素 说明 传输协议 编码格式 BasicHttpBinding 一个绑定,适用于与符合 WS-Basic ProfileWeb...服务(例如基于 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

62310

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

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

901100

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

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

78410

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节点中配置

50210

简易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节点中配置

44430

消息保护等级

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

848110

默认终结点

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

76060

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" /> 注:部署到生产环境后,只要修改配置文件

72220

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.3K90

WCF入门学习(3)

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

41720
领券