- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在尝试解决 WCF 中的设置困境时遇到了以下问题...
我使用 NetTcp 绑定(bind)创建了 WCF 客户端-服务器服务。我没有对安全设置进行任何更改,并且在一台计算机上运行时它运行得非常好。但是,当我从另一台计算机运行客户端时,它提示服务器不喜欢发送的安全凭证。
我现在明白 NetTCP 默认情况下是“安全的”,并且我的客户端可能会向其传递错误的安全详细信息 - 即 Windows 用户名和密码(或某种形式的域身份验证)我的服务器,因为它们没有在同一个域上运行,所以它不会喜欢。
但是,我不明白的是:
我没有在绑定(bind)中指定任何安全性 - 标准设置是否需要发送 Windows 用户名或密码?
我的服务器上没有安装任何证书 - 我知道 NetTCP 绑定(bind)需要某种形式的公共(public)私钥来保护凭据 - 但当客户端和服务器位于同一台计算机上时,这似乎可以工作 - 情况如何数据被加密?或者想要它,因为 WCF 知道它在同一台计算机上并且不需要加密?
我现在必须将客户端和服务器上的安全模式设置为“无”,并且它们连接良好。但是有没有一种方法可以在没有证书的情况下加密我的数据?
最后...传输安全和消息安全之间有什么区别?
为了检查我的理解(请原谅这个场景!)消息安全就像我从 A 发给 B 的一封信,然后我对我的手写内容进行编码,以确保如果有人拦截它,他们就无法阅读它?运输安全是指我是否决定通过武装运输工具发送信件,这样沿途就没有人可以拿到它?
是否可以在没有证书的情况下在 WCF 中进行任何形式的加密?我的项目是私有(private)项目,我不想购买证书,而且数据也不是那么敏感,所以这只是为了我自己的知识。
最佳答案
NetTcpBinding 的默认客户端凭据类型是 Windows 身份验证。要使 Windows 身份验证正常工作,客户端和服务器必须位于同一域或相互信任的域中(在您的情况下,您没有)。
如果客户端和服务器位于同一域中,WCF 将在“幕后”处理 Windows 身份验证机制。当客户端和服务器位于同一台计算机上时,它们实际上位于同一域中,因此 Windows 可以使用自己的机制来处理加密和解密。不过,它只会在相互信任的域内执行此操作。
如果您没有相互信任的客户端和服务器域,则客户端和服务器必须有其他方式来确定它们是否信任对方的 key 。这就是证书的用武之地。客户端和服务器都有自己的证书(或者服务器可以向客户端颁发证书)。
传输安全就像加密信封的外部和内部。缺点是,如果您必须将信封传递给您自己组织之外的某人,他们需要解密 key 才能知道信封应该去哪里 - 现在他们也可以读取信封中的消息。另一方面,传输安全性更快 - 它需要更少的安全开销数据与信封一起传递。
消息安全会对您的消息进行加密,但邮政工作人员(互联网及其路由器)可以读取信封。只有源和目标拥有解密消息的 key ,但中介可以正确路由您的消息。
总结:要通过 NetTcpBinding 使用加密,客户端和服务器都必须位于一个域(或相互信任的域)内,或者您必须拥有 key 交换证书。
<小时/>编辑:有人要求我提供一些示例代码 - 这是 XAML 中的绑定(bind)元素。它通常被放置在 netTcpBinding 元素内。
<binding name="Secure" listenBacklog="4000" receiveTimeout="00:20:00" sendTimeout="00:20:01"
maxReceivedMessageSize="2147483647" maxConnections="200" portSharingEnabled="true">
<!-- ~2 GB -->
<readerQuotas maxStringContentLength="2147483647"/>
<!-- ~2 GB max string content length -->
<security mode="Message">
<transport clientCredentialType="None" protectionLevel="EncryptAndSign"/>
<message clientCredentialType="None"/>
</security>
</binding>
重要的部分是安全元素。为了传输安全,可以将模式属性更改为“传输”。 clientCredentialType 很可能不是“None”,而是“Certificate”、“Ntlm”或“Windows”,具体取决于上下文。
关于WCF NetTcpBinding 安全性 - 它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2536522/
我正在尝试构建一个托管在服务器上的 Blazor 应用程序,起点位于一个 razor 页面内。 类似的东西: 我的问题是: 如果 Razor 页面具有授权属性,所有 blazor 代码都不是通过身份
对tomcat中管道和阀门机制不懂的小伙伴,参考本篇文章 领域 目前可知结构,如图所示,下面继续分析 GenericPrincipal类 LoginConfig类 Authenticator接口 在T
我刚刚开始学习 React 中的授权和身份验证,我在使用 JWT 完成我的第一个简单登录系统后编写了这篇文章,因为大多数人都知道您在浏览器中存储了一个 token ,然后将其与保存的进行比较现在,当验
我正在为grails项目寻找安全插件。 Spring安全核心1.2.7.3看起来很棒,但是似乎已经有将近一年没有开发了。有谁知道是这样吗? 还有其他好的插件吗? 我也正在使用mongodb,想知道sp
我有一个 WCF 服务,它使用具有消息安全性和用户名身份验证的 NetTcpBinding。在此之前,我使用 WsHttpBinding 但我切换到 NetTcp,因为我可以使用回调。 我的服务配置如
我正在考虑使用 cakePHP 构建一个 Web 应用程序。我的问题是我必须自己编写多少安全内容来防止(SQL 注入(inject)等)? cakePHP 自己处理什么安全问题,我必须编写什么代码?
任何人都有关于为安全环境强化/配置 TFS 的信息? 最佳答案 TFS 使用 Windows 身份验证,因此它与您的网络一样安全。我建议您还查看有关加强网络安全的资源。 Team Foundation
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我一直想知道 codeigniter 设置有多安全。因为数据库密码等信息存储在主应用程序文件夹的配置文件中,黑客可以检索到这些信息吗?我知道您可以将应用程序文件夹移动到远离 Web 根目录的位置,但如
在客户端使用 PouchDB 访问远程服务器时要遵循的最佳安全实践是什么? https://pouchdb.com/getting-started.html上的例子使用代码与远程服务器同步: var
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在开发一个网络应用程序,用户可以在其中上传文件并执行它们。我的意思是,他们可以上传 html 文件,然后通过单击,他们可以在我的 Web 应用程序内的 iframe 中执行该文件并查看渲染的 ht
试图澄清 -AsPlainText ConvertTo-SecureString 中的参数小命令: -AsPlainText Specifies a plain text string to conv
我正在玩 coreos 和 digitalocean,我想开始允许我的容器之间进行内部通信。 我已经为所有主机设置了私有(private)网络,现在我想确保某些容器只打开到 localhost 和内部
我们有两台机器: 服务器 客户 服务器正在运行 Clojure + Ring + ...标准 ClojureScript webstack。 客户端 = 某些运行 Chorme/Firefox/Saf
让我们有一个函数 foo 和一个类 Bar: fun foo(key: String): String? { // returns string or null } class Bar(x: St
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
确保只有正确的用户才能在 Sharepoint 2007 中看到 Web 部件的最佳做法是什么? 有人向我建议了安全组和受众。 最佳答案 这取决于您是在谈论 Web 部件的呈现还是从 Web 部件库添
我试图说服一个团队,使用 jQuery JSONP 调用与不受信任的第三方可能是不安全的。我正在使用标准 jQuery 代码: $.ajax({ url:unsecureserver+"?js
我有以下ajax调用,它检查用户是否是付费成员(member),如果是,则相应地运行某些功能。这可行,但我担心安全性。如果有人在控制台中更改此 ajax 代码,强制 #button 成功运行功能而无需
我是一名优秀的程序员,十分优秀!