我最近一直在做很多关于WCF,Web服务和分布式计算的学习和工作,但大多数安全概念都在我的脑海中。传输安全性,消息安全性,加密,证书等。我理解对称和非对称加密的基础知识,但我并不真正理解它们在SOAP对话中的实际应用。
我读过规格,但看起来有点密集。任何人都可以向我指出从基础开始并从那里开始工作的资源吗?我很想从大学的网络课程中剔除教科书,以便更好地了解最低级别的情况,但我不知道这是否是非常低效的。我不想阅读一个充满东西的小型图书馆 - 我只想坚定地理解这些概念,并能够将它们解释到桌面上的橡皮鸭上。
编辑:
自从我第一次写出答案以来,这已经有好几年了。已经广泛采用了支持Web的API和基于令牌的信任中继。
我还没看过,但是如果你正在寻找WCF特有的东西,Windows Communication Foundation Security将是一个很好的起点。
同时请关注像Facebook,Google和Twitter这样的主要参与者。他们正在使用像OpenID和OAuth这样的开放协议。起初,OAuth看起来很复杂,但您应该了解其机制。
在我看来,早期OAuth重新发明了SSL已经解决的许多轮子,并留下了一些安全漏洞。一个有趣的读物是Compromising Twitter's OAuth security system。 Facebook's OAuth 2.0 implementation和Google's OAuth 2.0 implementation通过在有意义的地方使用https简化了许多这些问题。这些必须读。
围绕OAuth的基本概念是信任中继。您希望第三方开发人员针对您的API制作应用,但最终用户无法始终信任这些应用。给他们密码,就像把钥匙交给王国。因此,用户在您的UI中键入密码,并且您的UI会使用访问令牌重定向到第三方。
Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication是对ASP.NET安全模型的一个很好的介绍。您可以跳过详细信息,因为现在大部分技术都已过时。
有关Web服务的一个很好的概述是Web Service Security: Scenarios, Patterns, and Implementation Guidance for Web Services Enhancements (WSE) 3.0。它说WSE,但基本概念仍然保持不变。
要获得有关WS-Security的更多详细信息,请阅读Securing Web Services with WS-Security: Demystifying WS-Security, WS-Policy, SAML, XML Signature, and XML Encryption。
阅读上面的内容后,真正帮助我的是查看Amazon S3's authentication等现有实现:
每个身份验证frob特定于用户和应用程序的api密钥,并且只能与该密钥一起使用。
身份验证frobs从创建时起60分钟有效,或直到应用程序调用flickr.auth.getToken,以较早者为准。
每个用户每个应用程序只有一个身份验证frob在任何时候都有效。应用程序必须处理过期和无效的身份验证,并知道如何续订它们。
许多Twitter API方法都需要身份验证。所有响应都与身份验证用户的上下文相关。例如,尝试检索与请求用户不是朋友的受保护用户的信息将失败。
目前,HTTP基本身份验证是唯一受支持的身份验证方案。通过Basic Auth进行身份验证时,请使用您注册的用户名或电子邮件地址作为用户名组件。会话cookie和基于参数的登录已知有效,但尚未得到官方支持。
基于OAuth令牌的身份验证方案不久将作为实验性测试版提供。
所以很高兴知道复杂的证书和PKI的东西,但世界似乎没有它就好了。
此外,微软的模式与实践小组还有WCF Security Guidance。看看这个。
渣
首先搜索维基百科的公钥基础结构(PKI),然后按照链接了解不同的部分。您不需要知道各种密码的加密算法,但如果您想真正了解WCF如何使用它,您需要了解这些概念。