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