关于WCF和安全问题我正在四处走动,所以我只想在这里提出一大堆问题,希望有人能帮助我获得清晰的图片.
有人可以给我一个关于传输与消息级安全性的简单英文解释.
我想我有一个在SSL下运行的服务,它将根据用户的Windows凭据对用户进行身份验证.我也想我知道如何限制访问通过一个的PrincipalPermission服务方法.但是我如何实际检索当前的IPrinciple,所以我可以根据谁调用服务返回不同的结果?
我已经找到了如何打开跟踪,我可以使用"Microsoft服务跟踪日志查看器"查看我的跟踪日志,但如果我能弄清楚我正在显示什么,那就太糟糕了.有没有一个很好的资源解释如何使用这个东西?
使用"证书"clientCredentialType时,这与SSL有什么不同?
使用"Windows"clientCredentialType时,如何查看正在通过的Windows用户?
我的要求意味着我必须使用basicHttpBindings - 我在假设中是正确的:
我只提供运输级别的安全性吗?
我无法为此绑定实现自定义用户名/密码?
我知道这些问题可能看起来很愚蠢,但任何有关澄清的帮助都会有所帮助.
编辑:
如何以类似于.asmx服务的方式向我的服务添加自定义SOAP标头?这是一种有效的方法吗?
编辑:
除了上述问题之外,我想知道是否可以通过检查Active Directory来验证基于Windows用户的Windows移动设备.对于迄今为止我发现的所有内容,似乎不太可能.
注意:对于那些不知道Windows CE版本的WCF可用的人:仅限传输级别安全性,以及客户端凭据类型的无/证书.所以看来CE的WCF默认不允许这样做,但是我可以安全地在消息中发送这些信息(通过方法签名),这是否是一种可接受的方式来发送这种信息?
我不知道所有的答案,但这里是我知道的
传输安全意味着在传输消息时对通信进行加密,使其无法被读取和/或被篡改.消息安全意味着消息本身的内容被加密传输但不一定.例如,消息安全性可以与HTTP一起使用,而传输安全性则需要使用HTTPS(或其他绑定).
IPrincipal principal = Thread.CurrentPrincipal;
没有答案
是的,虽然SSL本身使用证书但它不一样.您可以让客户端发送服务已知的证书或由受信任的机构签名的证书,证明该服务知道客户端是谁以及是否允许他们进行呼叫.使用SSL只会确保第三方无法通过拦截网络包来读取客户端与服务之间的通信.
IPrincipal principal = Thread.CurrentPrincipal; principal.Identity.Name;
没有.
您有无,传输,消息和混合安全性作为您的选项但是传输安全性将需要使用HTTPS调用端点,因为协议的安全版本
编辑:查看此论坛的讨论.
这些问题当然不是愚蠢的.
PS我可以推荐Juval Lowy 的书籍编程WCF服务,它非常深入,并附带了一个非常有用的框架,可以扩展WCF /简化某些事情.