问题标签 [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 回答
214 浏览

.net - 如何为我的 WCF 服务托管获取有效的 X509Certificate

我正在我的 asp.net 托管帐户中托管我的 WCF 服务,我想使用 X509Certificate 进行通信身份验证。在这种情况下,我在哪里获得证书?制作一个然后Ftp到我的帐户?如果是,我如何参考此证书以供使用。如果没有,请问我如何获得一个使用?我需要购买一个或什么?


我可以在我的本地机器上创建和安装一个,但询问我将如何在我没有远程访问权限的主机上执行此操作,只有 FTP 访问权限。

0 投票
2 回答
2438 浏览

wcf - WCF 用户名身份验证和故障合同

我有一个 WCF 服务配置为通过 System.IdentityModel.Selectors.UserNamePasswordValidator 类的重写 Validate() 方法使用自定义用户名验证。

合同的所有方法都已使用 FaultContractAttribute 进行修饰,以将自定义 SOAP 错误指定为可返回。

当抛出 FaultException<T>(其中 T 是 FaultContractAttribute 中指定的类型)时,一切都按预期运行,并且我在响应 XML 中得到了自定义错误。

但是,如果我尝试在用户名身份验证类的重写 Validate() 方法中抛出 FaultException<T>,我会得到一个通用 SOAP 错误,原因如下:

“此故障的创建者没有指定原因。”

但是,如果我更改代码以引发一般 SOAP 错误,如下所示:

throw new FaultException("Authentication failed.");

我至少会得到“身份验证失败”。在原因元素中。

我的问题是:

  • 如果在 Validate() 中抛出 FaultException<T> 异常,为什么它们在服务实现中的处理方式不同?
  • Validate() 方法中抛出的异常是否符合合同方法上指定的 FaultContractAttribute?

非常感谢任何帮助。我自己的猜测是,身份验证发生在消息与合同的任何方法相关联之前,因此与 FaultContractAttribute 无关,但任何确认这一点并提供解决方法的文章都会非常有用。

大理

0 投票
0 回答
322 浏览

wcf-security - 试图让 WCF 进行跨域通信

我试图让两个 WCF 服务在跨域环境中相互通信,以便 .NET Web 应用程序调用 DMZ 中服务器 A 上的服务 A。然后,服务 A 通过位于安全域中的服务器 B 上的 SSL 调用服务 B。

我目前能够让服务 B 正常运行。我可以通过 SSL 从域内调用服务 B,没有任何问题。但是,一旦我尝试从服务 A 甚至只是简单的 .NET Web 应用程序进行调用,我就会遇到错误。

我得到的错误取决于我使用的端点和绑定配置。到目前为止,我一直在使用 wsHttpBinding 或 BasicHttpBinding ......都不适合我。

关于我的端点和绑定应该是什么样子的任何建议或示例?

谢谢

多米尼克

0 投票
1 回答
2555 浏览

.net - 调试 netTcp WCF 绑定

我有一个netTcp WCF服务在远程机器上的 Windows 服务中运行。windows服务以用户身份运行mydomain\u2

Windows 服务托管 WCF的.config文件是

现在当我跑

svcutil.exe http://wcfhostmachine:8000/MyWCFService?wsdl

客户端output.config具有以下安全部分:

它们是不同的。为什么??我应该更改客户端以匹配服务器吗?

虽然我仍然可以向WCF服务发送指令并对其进行处理,但当 Visual Studio 尝试进入WCF远程主机上运行的代码时,我得到了臭名昭著的:

无法自动调试“.....”。连接到服务器计算机失败。目标计算机上的 Visual Studio 远程调试器无法连接回此计算机。确保DNS在目标计算机上正确配置。

不用说DNS很好。

我能想到我遇到这种情况的唯一其他原因是因为我的 Visual Studio 运行为mydomain\u1并且服务在远程计算机上运行为mydomain\u2.

过去有没有人面临/解决过这个问题?

更多信息

下面是我的主机服务的 App.config。我是否会因为没有 mex 端点而遇到此问题?

0 投票
2 回答
9312 浏览

wcf - WCF 服务中的身份验证

我在另一台机器上部署了 WCF 服务,我想根据 WCF 服务对客户端进行身份验证。

我做了以下事情:

1)在 IIS 中,我取消选中匿名访问并选中“集成 Windows 身份验证”复选框。

2) 我的网络配置

3)在客户端,我正在传递用户凭据,如下所示:

我的问题是如何在服务器端(部署服务的地方)捕获用户名和密码?

如何根据传递的凭据对用户进行身份验证?

目前我正在使用basichttp绑定..这个绑定是否足以支持安全模型?

0 投票
0 回答
709 浏览

.net - 试图了解 AuthorizationContext 对象的生命周期

我有一个简单的授权设置,用于检查自定义授权策略 (IAuthorizationPolicy) 中某些已配置的活动目录角色 - 如果拥有这些角色,则添加声明。最重要的是,我有一个覆盖 CheckAccessCore 的 ServiceAuthorizationManager 子类。它验证是否拥有一些在自定义授权策略评估中添加的声明,以确认或拒绝传入消息。

因此,这些组件的设置在我的服务中运行良好——我的问题是它们何时被调用/与它们关联的对象的生命周期。每次调用服务时都会调用我的子类 ServiceAuthorizationManager - 这是我所期望的。但是,每次调用服务时也会调用我的自定义授权策略——这不是我所期望的。我可以看到每次调用服务都会生成一个新的 AuthorizationContext 对象。

我认为我的期望基于以下几点: AuthorizationContext 将在身份验证发生后创建 - 每次调用服务时都不会发生这种情况,因为客户端连接到 NetTcpBinding,每次调用都在同一个代理上(并且我想在传输上使用相同的打开套接字),使用带有 Windows 凭据的传输安全性,以及服务会话实例。

所以,我总体上期望的是 AuthorizationContext 只会在创建新会话时生成,或者当旧的 AuthorizationContext 对象根据其 ExpirationTime 属性过期时(不是在每次调用服务时)。

因此,如果有人能告诉我在 AuthorizationContext 对象的生命周期内的实际情况是什么 - 或者可能告诉我如何更改服务以使其按照我预期的方式运行,我将非常感激。

对于上下文 - 如果它有任何区别 - 我仍在使用 3.0 CLR 库。

谢谢

0 投票
2 回答
149 浏览

wcf - 最适合这种情况的身份验证技术是什么?

请建议我在下面提到的场景中实现的最佳身份验证方式:

要求是我必须在全球多个国家/地区部署 WCF Web 服务。

注意:部署服务的所有机器都在同一个域中。

1.访问该服务的客户端应该属于同一个域,否则身份验证应该失败。

目前我正在使用“Windows”使用消息安全模式

0 投票
1 回答
11400 浏览

wcf - 此服务的安全设置需要“匿名”身份验证,但托管此服务的 IIS 应用程序未启用它

我正在使用 IIS V5.1。集成 Windows 身份验证

我有以下网络配置:

当我选择在浏览器中查看 svc 文件时,它会显示以下错误:

例外:
此服务的安全设置需要“匿名”身份验证,但托管此服务的 IIS 应用程序未启用它。

当我删除 Mex 端点时,此错误被删除。

但是当我尝试在客户端应用程序中添加服务引用时,会出现以下错误:

URL http://localhost/DXDirectory/DXDirectoryService.svc处的文档未被识别为已知文档类型。

来自每种已知类型的错误消息可能会帮助您解决问题:

HTTP 请求未经客户端身份验证方案“匿名”授权。从服务器收到的身份验证标头是“协商,NTLM”。

远程服务器返回错误:(401) Unauthorized。

如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。

0 投票
1 回答
1041 浏览

wcf - 如何将虚拟目录配置为需要 SSL?

我正在使用 IIS V5.1 我有 wcf 服务应用程序,我正在为其使用安全模式 = 传输。和 wshttpbinding。

如何将虚拟目录配置为需要 SSL?

0 投票
1 回答
1355 浏览

wcf - 从 WCF 操作中获取 ClientCredentials

我的 WCF 服务使用自定义凭据验证器来实现基于消息的自定义安全性,因为我想确保在我的 Web 服务上调用操作的每个客户端在我的数据库中都有相应的用户名和密码。

问题是,一旦用户通过身份验证,我想在我的 OperationContract 实现中使用 userName 来进行基于上下文的调用。

我不能依赖被调用者的诚实来指定他们的实际用户名,所以如果不输入密码就无法通过它。我想避免每次调用我的 Web 服务时都必须接受 ClientCredentials。

谢谢。