问题标签 [wcf-security]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2881 浏览

wcf - 什么是 WCF 中的消息包装

在 WCF 消息合同中,我们有 IsWrapped 属性和 wrappername、wrappernamespace 属性

  • 问题?

    1. 什么是消息包装
    2. 包装消息有什么好处
    3. 包装消息是否安全。
0 投票
2 回答
922 浏览

c# - 在使用 UsernamePasswordValidator 保护 HTTP 绑定的同时保持 MEX 绑定不安全?

我们使用 UsernamePasswordValidator 和证书来保护对 WCF 服务的访问。

但是,我们使用的自定义授权策略是 SERVICE 行为,而不是端点行为,因此它们适用于所有端点,包括 MEX 端点。我们希望能够使用 Visual Studio 获取服务引用,而不必每次都注释掉服务行为,但是由于 mex 和 wshttp 端点都是安全的,所以在执行“添加服务引用”时会出现错误..”

有没有办法解决?

0 投票
2 回答
23484 浏览

asp.net - 将 FormsAuthentication cookie 传递给 WCF 服务

我有一个与远程 WCF Web 服务对话的网站。两者都使用相同的自定义 FormsAuthentication Provider。我想使用模拟当前登录站点的用户的 WCF 服务进行身份验证。我已经使用 UserName 客户端凭据手动完成了此操作,但我需要知道用户密码。所以,最有效的是:一个经过身份验证的用户发出请求,我创建一个服务客户端并设置他的凭据:

但我真正想要的是直接传递 FormsAuthentication cookie,因为我不想存储用户密码。

有任何想法吗?

0 投票
3 回答
12306 浏览

wcf - WCF - 无法使用以下搜索条件找到 x.509 证书

好的,我已经看到了与此问题相关的几个问题,并且我尝试了很多其中提出的想法,但没有成功。这是我的情况:

我正在通过我公司的 Intranet 访问 Web 服务。我使用 svcutil.exe 为 WCF 生成客户端类。当服务正在开发中并且不需要身份验证凭据时,我能够毫无问题地运行 Web 服务调用,因此我知道代码有效。当时,代码在 SSL 上运行。我将所需的证书导入到受信任的根证书颁发机构存储中,一切都很好。

我们刚刚转移到舞台环境,并且服务已升级为需要凭据才能连接。我将连接切换到新端点,并添加了验证代码。这是我第一次使用 wcf,所以请耐心等待任何明显的错误。我的问题是我无法通过代码找到证书以传递给服务进行身份验证。我基于我找到的一些在线代码示例。

这是我的 svcutil 生成的配置示例:

这是我用来尝试连接的代码。一旦我尝试找到证书,就会抛出异常:

我尝试了几种不同的 X509FindTypes,并将它们与证书上的值匹配,但没有成功。我的代码有问题吗?还有另一种方法可以查询证书存储以验证我传递的值吗?

我运行 Visual Studio 的开发机器已导入证书。

0 投票
2 回答
2781 浏览

wcf - 服务器使用用户帐户的 WCF Kerberos 客户端模式

我们有一个 WCF(Windows Communication Foundation)客户端和服务应用程序。我们正在使用带有 Kerberos 的 Windows 身份验证。

问题是该服务可能在许多帐户之一下运行(可能是网络服务,也可能是特定用户帐户——取决于 IT 组)。此帐户不可能每天更改,但可能偶尔更改(可能每隔几个月)。此外,我们将此客户端/服务包提供给多个组,每个组可能有自己的帐户用于运行服务(这只是为了让您知道我们不能为单个团队提供自定义解决方案)。

现在上一段出现问题的原因显然是如果服务没有在 SYSTEM 或 NETWORK SERVICE 帐户(即用户帐户)中运行,则客户端必须在其端点的身份中指定用户帐户的名称。

有关此限制的更多信息,请参阅: http ://social.msdn.microsoft.com/Forums/en-US/wcf/thread/feb6bc31-9a4b-4f8d-a887-ef6d2c7abe41 和http://www.vistax64.com/indigo /146204-using-localhost-vs-environment-machinename.html

现在这似乎很难处理 IT 部门更改运行服务的帐户的情况。如果有的话,处理这个的模式是什么?其他人是如何处理这个问题的?我想到的一个解决方案是,当服务的用户帐户发生更改时,管理员会发送一封电子邮件,其中包含指向更新客户端或配置文件的应用程序的网络链接,因此客户端引用新的用户帐户. 但这似乎很骇人听闻。

诚然,这很像端点移动的 URI。除了,我认为人们对更改 URI 是客户端必须知道的事情有更多的期望,但是更改运行服务的帐户对客户端来说应该是相对透明的。

顺便说一句,这需要托管在 IIS 7.0 上,如果这很重要的话。

0 投票
1 回答
13751 浏览

wcf - WCF 客户端使用证书和用户名/密码凭据?

我正在使用来自 ASP.NET 的公司内部的 Web 服务。我使用 svcutil.exe 连接到服务并从 wsdl 生成绑定和类。我能够连接到不需要身份验证的开发版本。现在我们正在添加安全性。我的新 URI 使用 https,但也需要用户凭据。

我对 WCF 很陌生,并且正在尝试确定配置它的方式。从我在 MSDN 上的阅读来看,似乎要走的路是使用。

更新:这是我一直在尝试的最新代码。这包含了来自答案的反馈:

这是调用代码:

我收到一条错误消息,指出我正在通过请求传递匿名凭据。使用更新的代码,现在我收到一个不同的异常:

更新:

在进行建议的更改并从 using 块中删除服务调用(根据本文)后,我现在收到 MessageSecurityException:

0 投票
0 回答
3568 浏览

silverlight-3.0 - 在 WCF 中使用自定义绑定时的安全配置

我即将将应用程序移植到silverlight。到目前为止,我的客户端应用程序使用 netTcpBinding 与服务器通信。但是 Silverlight 不支持这一点,我发现他们建议改用自定义绑定。

我想知道我是否需要以关于安全性的特殊方式配置绑定。当客户端和服务器在同一台机器上运行但在不同机器上运行时,我的分布式应用程序运行良好。在这种情况下,我收到以下错误:

由于 EndpointDispatcher 的 ContractFilter 不匹配,接收方无法处理带有操作“ http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence ”的消息。这可能是由于合同不匹配(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息、传输、无)。

我已经检查了合同和绑定(当切换到自定义绑定时会出现问题,而 netTcpBinding 可以正常工作)。该端口也在防火墙处启用。根据错误消息,我认为 WCF 可能假设了一些在客户端和服务器中不匹配的安全默认值。

服务器配置文件如下:

客户端配置是这样的:


0 投票
2 回答
1989 浏览

.net - 如何将对象注入 WCF 验证器类

跟进对WCF 服务使用依赖注入,是否有任何方法可以将 DI 用于 WCF验证器,以便可以这样做:

编辑 - 我试图将 Dzmitry 的建议应用于我的自定义行为扩展,因为我的验证器是在 app.config 中定义的。可悲的是,我得到了 MethodMissingException,因为 wcf 希望我的验证器有一个默认构造函数:

System.MissingMethodException: No default constructor has been defined for this object.

at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)

这是我的行为课:

0 投票
3 回答
2851 浏览

wcf - 没有传输安全性的 WCF 用户名身份验证是否存在安全风险?

我正在尝试在 WCF 中使用用户名消息安全性。我正在尝试确定使用无/匿名的传输凭证类型是否会带来明确的安全风险。

我关心的是通过使用 WS-trust 规范(TLS 协商)对二进制数据进行隧道传输的初始交换。在建立共享安全上下文之前,这种对我的用户名和密码进行身份验证的尝试是否容易受到网络嗅探器的影响?

欢迎任何想法。

谢谢。

0 投票
1 回答
2119 浏览

wcf - 如何在使用 WCF Web 服务时对客户端进行身份验证?

我想在使用 Web 服务时对客户端进行身份验证。我看到客户端中公开了一个名为 ClientCredential 的属性,我们可以在其中传递用户名和密码。如何将此信息传递给我的 WCF Web 服务以及如何验证用户 ID 和密码?