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

在使用UserNamePasswordValidator时,如何在WCF服务中获取SOAP用户名?

在使用UserNamePasswordValidator时,可以通过以下步骤在WCF服务中获取SOAP用户名:

  1. 创建一个自定义的UserNamePasswordValidator类,继承自System.IdentityModel.Selectors.UserNamePasswordValidator。重写Validate方法,该方法接收用户名和密码作为参数,并在此方法中进行用户名和密码的验证逻辑。
  2. 在WCF服务的配置文件中,添加一个自定义的行为扩展元素,用于指定使用自定义的UserNamePasswordValidator类进行验证。示例如下:
代码语言:txt
复制
<behaviors>
  <serviceBehaviors>
    <behavior name="CustomValidatorBehavior">
      <serviceCredentials>
        <userNameAuthentication userNamePasswordValidationMode="Custom"
                                customUserNamePasswordValidatorType="YourNamespace.YourValidatorClass, YourAssembly" />
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>

其中,YourNamespace.YourValidatorClass是自定义的UserNamePasswordValidator类的命名空间和类名,YourAssembly是包含该类的程序集名称。

  1. 在WCF服务的终结点配置中,将上述自定义行为扩展元素应用到相应的服务行为上。示例如下:
代码语言:txt
复制
<services>
  <service name="YourNamespace.YourServiceClass">
    <endpoint address="" binding="basicHttpBinding" contract="YourNamespace.YourServiceInterface"
              behaviorConfiguration="CustomValidatorBehavior" />
  </service>
</services>

其中,YourNamespace.YourServiceClass是包含WCF服务实现的类的命名空间和类名,YourNamespace.YourServiceInterface是服务接口的命名空间和接口名。

  1. 在WCF服务实现类中,通过OperationContext.Current.IncomingMessageHeaders获取SOAP消息头,然后从消息头中提取用户名。示例如下:
代码语言:txt
复制
public class YourServiceClass : YourServiceInterface
{
    public void YourServiceMethod()
    {
        MessageHeaders headers = OperationContext.Current.IncomingMessageHeaders;
        string username = headers.GetHeader<string>("Username", "Namespace");
        // 使用获取到的用户名进行相应的处理
    }
}

其中,"Username"是SOAP消息头中用户名的名称,"Namespace"是该用户名的命名空间。

通过以上步骤,你可以在WCF服务中使用UserNamePasswordValidator进行用户名和密码的验证,并且获取到SOAP用户名进行后续处理。

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

相关·内容

谈谈WCF的客户端认证

对于基于Internet的应用,基于用户名和密码的认证方式是最为常用的,而WCF为你提供了不同模式的用户名认证方式。首先还是从用户凭证的表示说起。...前者将用户存储于SQL Server数据库,而后者则直接建立AD之上,本实例采用SqlMembershipProvider,在前面一个实例演示,我们创建了以计算服务为场景的解决方案,现在我们直接沿用它...而所有应用记录维护aspnet_Applications这么一个表。现在我们需要通过执行下面一段SQL脚本该表添加一条表示我们应用的记录。...到目前为止,我们创建的数据库并没有用户帐户记录。为了演示认证的效果,我们必须创建相关用户帐户记录。为了省事,我直接将相关的代码写在了服务寄宿的代码。...在下面的代码,我进行了两次服务调用。但是创建服务代理对象的ChannelFactory被设置了不同的用户名凭证。

1.1K100

《我的WCF之旅》博文系列汇总

[第9篇] 如何在WCF使用tcpTrace来进行Soap Trace 无论对于Web Service还是WCF,Client和Service之间交互的唯一形式是通过发送和接收Soap Message...在这些工具之中,我觉得最好用的就是Microsoft Soap ToolkitSoap Trace Utility和tcpTrace。我们今天就来讲讲如何在WCF使用tcpTrace这个工具。...[第10篇] 如何在WCF进行Exception Handling 在任何Application的开发,对不可预知的异常进行troubleshooting,异常处理显得尤为重要。...但是由于各个Service是自治的,如果一个Service调用另一个 Service,服务提供方抛出的Exception必须被封装在Soap Message,方能被处于另一方的服务使用者获得、从而进行合理的处理...我们今天就来谈谈WCF如何使用MSMQ。

43010

我的WCF之旅(9):如何在WCF使用tcpTrace来进行Soap Trace

我们对Web Service和WCF进行深入学习的时候,借助一些Soap Trace 工具对Soap Message进行深入剖析是非常有必要的。...在这些工具之中,我觉得最好用的就是Microsoft Soap ToolkitSoap Trace Utility和tcpTrace。我们今天就来讲讲如何在WCF使用tcpTrace这个工具。...按照面向服务的原则,服务具有高度的自治性(Automation),Soap Message一旦被Service发送出去,就不能再被该Service所控制,所以Soap来说,它需要具有高度的自描述性(Self-Describing...WCF通过ClientViaBehavior实现这样的功能,我将在 后面讲到。...而我们今天所介绍的通过tcpTrace来获取Soap的情况下,tcpTrace实际是就是充当了Intermediary Node的角色。 我们现在就来介绍如果使用tcpTrace。

95880

《我的WCF之旅》博文系列汇总

[第9篇] 如何在WCF使用tcpTrace来进行Soap Trace 无论对于Web Service还是WCF,Client和Service之间交互的唯一形式是通过发送和接收Soap Message...在这些工具之中,我觉得最好用的就是Microsoft Soap ToolkitSoap Trace Utility和tcpTrace。我们今天就来讲讲如何在WCF使用tcpTrace这个工具。...[第10篇] 如何在WCF进行Exception Handling 在任何Application的开发,对不可预知的异常进行troubleshooting,异常处理显得尤为重要。...但是由于各个Service是自治的,如果一个Service调用另一个 Service,服务提供方抛出的Exception必须被封装在Soap Message,方能被处于另一方的服务使用者获得、从而进行合理的处理...我们今天就来谈谈WCF如何使用MSMQ。

63190

WCF 4.0路由服务Routing Service

面向服务的应用系统,最重要的概念就是消息,消息的传输是一个非常重要的问题。而在大多数情况下,消息要经历多个网络节点,这里会涉及到消息路由问题。...Web服务路由规范(WS-Routing)定义了路由SOAP消息的机制。SOAP是一个轻量级的有线传输协议,定义了一系列传输交换机制,用来传输应用层协议上使用的方法调用。...我们现在来了解一下WCF如何调用一个特定的服务方法的。这也是WCF路由服务涉及到的重要内容。 我们知道,客户端,我们可以通过代理类来调用一个服务的方法。...但是这个消息又是如何在服务端调用到特定的方法的呢? WCF,每个服务端点实际上有两个地址: 逻辑地址:逻辑地址(“To”)是 SOAP 消息的目标地址。...前面的SOAP的Action值,是一个消息调度的方式。 当传入消息WCF使用消息过滤器器确定匹配端点。我们也可以自己定义消息过滤器器类型。WCF对于自定义消息过滤器器的支持,带来了很大的灵活性。

1.2K80

Self Host模式下的ASP. NET Web API是如何进行请求的监听与处理的?

WCF的消息处理管道的缔造者是作为终结点三要素之一的Binding。Binding不仅仅为服务端创建用于接收请求回复响应的管道,同时也为客户端创建发送请求接收响应的管道。...如果读者对此比较感兴趣,可以参阅《WCF的绑定模型》。由于ASP.NET Web API只是利用HttpBinding创建服务端消息处理管道,所以我们只讨论Binding的服务端模型。 ?...现在我们就来讨论一下ASP.NET Web APISelf Host模式下使用的HttpBinding由哪些BindingElement构成。 ?...ClientCredentialType表示客户端采用的用户凭证类型,而UserNamePasswordValidator和X509CertificateValidator属性值分别在用户凭证为“用户名...现在我们直接利用浏览器对定义ContactsController的两个Action方法Get发起请求,通过注册的HttpRoute和“请求的HTTP方法直接作为Action名称”的原理,我们使用的URL

1.7K60

利用WCF改进文件流传输的三种方式

WCF跨域传输使用了两种模型的方法调用:一种是同步模型,这种模型显然对那些需要大量操作时间的方法调用(如从数据库获取大量数据)是一种痛苦的选择。...WCF引入了一种专门针对数据流进行优化编码的MTOM模型。下面我们使用编码模型和调用模型三种方式来改写文件流的传输,以提高WCF应用程序的性能。...所以利用这种编码传输信道之间传输可以显著提高传输性能。WCFMTOM模型的操作契约只能使用单个Stream对象作为参数或者返回类型。 ?...这种模型的特点如图所示: 1.1实现服务契约 服务契约是服务所支持的操作、使用的消息交换模式和每一则消息的格式,它控制消息被格式化的方式,在这里由于要使用MTOM编码消息,所以操作契约必须要以单一的...,后来我分析了Windows Trace Viewer的消息包,发现在用异步方法,整个过程只用两个消息来回,这就意味着第一次的SOAP包是SOAP消息加上MTOM编码的文件流作为附件一起发送的,

1.3K60

WCF传输安全(Transfer Security)的基本概念和原理:认证(Authentication)

由于安全体系整个WCF框架体系具有极其重大的分量,接下来的系列文章,我将深入探讨这一块我之前的文章中一直不曾触碰的境地。...如果访问者进行服务调用之前没有验证自己试图访问服务的真实身份,贸然地将自己的网银帐号的密码作为请求发送出去,如果该请求被定位到一个黑客或者流氓软件厂商伪造的服务,它将有可以直接获取到你提供的帐号和密码信息...用户名/密码 我们最常使用的认证方式莫过于采用验证用户名和密码的形式,以致于我们提到身份验证,很多人会想到密码。最为常用的凭证类型,用户名/密码凭证由两个要素构成,即用户名和密码。...采用用户名/密码认证方式的应用,认证方一般具有所有用户帐号和密码的列表。...那么WCF服务端对于客户端提供的用户名/密码用户凭证,应该采用怎样的验证手段呢?基于用户名/密码的验证规则方面,WCF的安全框架体系为你提供了多种方案。

80190

原 REST - Representati

.NET 4 / REST / WCF WCF并非仅仅能用来否剑SOAP服务,他是一个具有通用编程模型并且完全基于插件的通信基础框架。...但是, 当我们构建服务公开端点, 应该注意安全问题。rest风格的服务只http端点, 因此使用 http ( HTTPS、证书) 实现的所有安全方面也可以用 rest 实现。...自寄宿web服务, 大部分的安全方面都应该在代码得到注意;另一方面, iis 托管, iis设置会处理安全问题。... IIS 上部署的服务的安全性 IIS上承载终结点, 使用web.config文件进行配置,可以对运行服务的虚拟目录进行配置。我们需要知道客户机配置和虚拟目录配置。...不适合使用 设计面向服务的体系结构的应用时, 它互联了许多系统并使用了许多传输通道, 所以最好使用 SOAP

1.1K70

WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理

WCF客户端和服务端的框架体系相互协作,使得开发人员可以按照我们熟悉的方式进行异常的处理:服务操作执行过程抛出异常(FaultException),调用服务捕获异常,完全感觉不到“分布式”的存在...我们可以这样来简单地描述WCF异常处理框架的功能实现:WCF服务端将抛出的FaultException异常进行序列化,并根绝消息的SOAP规范(SOAP 1.1或SOAP 1.2)和WS-Addressing...具体来讲,ServiceHost被初始化过程WCF会为服务的每个终结点创建相应的终结点分发器(EndpointDispatcher)。...DispatchRuntime的初始化过程WCF会根据服务的描述创建一系列的DispatchOperation对象。...默认的情况下,WCF采用懒惰加载(Lazy Loading)的方式创建FaultFormatter,也就是说WCF真正使用到FaultFormatter的时候,才动态地创建该对象。

875100

.NET周报【10月第1期 2022-10-11】

该平台建立几十个分布式服务上,每秒处理数千个请求,时间不到 100ms。通过 WCF 托管一个(仅仅是 "解除 "的)Windows 虚拟机的.NET 框架 4.6 和 SOAP 服务。... Windows 虚拟机托管了一个 WCFSOAP 服务和一个.NET 框架 4.6。 文章介绍了转移到新的.NET 平台的原因。 原因主要有以下五点: 跨平台,使用容器。...该服务是由 WCFSOAP 服务构建的,由于它是对用户开放的,所以不可能迁移到类似 gRPC 的东西上,所以最后创建了 CoreWCF,它是 WCF 的一个子集,并进行了迁移。...谈到.NET 框架与.NET 的关系,他说:"我们的目标是使我们的产品和服务更有竞争力。 从 WCF 到 CoreWCF 的迁移对.NET 有很大的影响,可以减少 40-50%的内存使用。...Blazor WebAssembly 托管 GitHub Pages 上,如何在访问不存在的页面显示一个自定义错误页面的文章。

4.9K20

WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理

消息,不但承载着正常服务调用的请求和回复,在出现异常,消息依然是错误信息的载体。...下的异常:FaultException WCF技术剖析(卷1)》,我曾经提到过,整个WCF体系下,数据存在的形态大体可以分为两种:XML和托管对象(Managed Object)。...而最终服务调用体现在消息的交换上,消息基于XML的(除了少部分非XML的消息,比如JSON)。从数据转化的角度上讲,WCF起到了一个将数据从这两种形态数据进行转化和适配的作用。...WCF异常处理体系,对于异常或者错误,XML的世界里最终通过Fault消息体现;而在托管对象的世界,即使相应的Exception对象。...服务执行过程,我们手工抛出FaultException异常,WCF服务端框架会对该异常对象进行序列化病最终生成Fault消息。

1.1K100

认证与凭证:用户名密码认证与Windows认证

用户凭证的类型决定了认证的方式,WCF支持一系列不同类型的用户凭证,以满足不同认证需求。接下来,我们来简单介绍几种使用比较普遍的凭证以及相应的认证方式。...采用用户名/密码认证方式的应用,认证方一般具有所有用户帐号和密码的列表。...虽然我们进行项目开发的时候,我们也会选择对用户注册提供的密码进行加密存储,这样可以让用户忘记原来的密码的时候,通过向认证方证明其真实身份的前提下,让认证方通过通过解密返回其原来的密码。...如果你选择了用户名/密码凭证,WCF为你提供了三种认证模式: 将用户名映射为Windows帐号,采用Windows认证; 采用ASP.NET的成员资格(Membership)模块 通过继承UserNamePasswordValidator...[NTLM篇] 《下篇》,我们着重讨论基于X.509数字证书的凭证。

2.3K80

WinForm企业应用框架设计【五】系统登录以及身份验证+源码

索引 WinForm企业应用框架设计【一】界限划分与动态创建WCF服务(no svc!no serviceActivations!)...特殊的是,登录之后的每次服务端交互, 服务端都要确认当前的客户端的正确性 为了做到这一点, 我们就要在每次与WCF交互的时候, 把客户端的身份传递给服务器端,并在服务端缓存起来。..."ns"); 这一句得到了我们客户端传上来的UserId 登录逻辑的服务类里,我们重写了CheckLogin方法 public class LoginService :ServiceBase...summary> /// 从WCF获取所有菜单 /// private void PrepareMenus() {...就这些东西~ ---------------------------------------- 遗留问题 我试图ClientFactory获取服务端反馈的错误 ((IClientChannel)proxy

56820

WCF版的PetShop之三:实现分布式的Membership和上下文传递

,通过Initialize方法获取配置的终结点名称并创建服务代理。...比如在PetShop服务端进行审核(Audit)的时候,须要获取当前登录的用户名。而登录用户名仅仅对于Web服务器可得,所以每次服务调用的过程,需要从客户端向服务端传递。...服务调用的传递 下面我们来介绍一下如何实现上下文信息WCF服务调用过程的“隐式”传递。...PetShop,我们通过WCF的扩展实现此项功能。...上下文传递的实现原理很简单:客户端,将序列化后的当前上下文信息置于出栈(Outgoing)消息的SOAP报头中,并为报头指定一个名称和命名空间;服务端,服务操作执行之前,通过报头名称和命名空间将上下文

71060
领券