Edit:
自从我第一次写下答案以来已经有好几年了,而且这个列表也已经过时了。支持 Web 的 API 和基于令牌的信任中继已得到广泛采用。
我还没读过,但是Windows 通信基础安全如果您正在寻找特定于 WCF 的内容,那么这将是一个不错的起点。
还要密切关注主要玩家的喜好Facebook, Google, and Twitter是做。他们正在使用开放协议,例如OpenID and OAuth。乍一看,OAuth 看起来很复杂,但你应该了解其机制。
在我看来,早期的 OAuth 重新发明了 SSL 已经解决的许多轮子,并留下了一些安全漏洞。一个有趣的读物是损害 Twitter 的 OAuth 安全系统. Facebook 的 OAuth 2.0 实施 and Google 的 OAuth 2.0 实施在有意义的地方使用 https 可以简化许多此类问题。这些都是必读的。
OAuth 的基本概念是信任中继。您可能希望第三方开发人员针对您的 API 开发应用程序,但最终用户并不总是信任这些应用程序。给他们密码,就像给他们王国的钥匙一样。因此,用户在您的 UI 中输入密码,您的 UI 将使用访问令牌重定向到第三方。
构建安全的 ASP.NET 应用程序:身份验证、授权和安全通信很好地介绍了 ASP.NET 的安全模型。您可以跳过细节,因为许多技术现在已经过时。
针对 Web 服务的一个很好的概述是Web 服务安全:Web 服务增强 (WSE) 3.0 的场景、模式和实施指南。它说的是WSE,但基本概念仍然保持不变。
要获取有关 WS-Security 的更多详细信息,请阅读使用 WS-Security 保护 Web 服务:揭秘 WS-Security、WS-Policy、SAML、XML 签名和 XML 加密.
阅读完上面的内容后,真正对我有帮助的是查看现有的实现,例如Amazon S3 的身份验证:
Amazon S3 的身份验证 http://docs.amazonwebservices.com/AmazonS3/2006-03-01/images/HMACAuthProcess_You.gif
Flickr 身份验证 API:
每个身份验证 frobe 都是特定的
到用户和应用程序的 api
键,并且只能与该键一起使用
钥匙。
身份验证 flob 的有效期为 60
从创建之日起几分钟,
或者直到应用程序调用
flickr.auth.getToken,以哪个为准
早点。
每一个只有一个身份验证
每个用户的申请有效期为
任何一次。应用程序必须处理
已过期且无效
身份验证 fobs 并知道如何
更新它们。
推特 REST API
许多 Twitter API 方法需要
验证。所有回复都是
相对于上下文
验证用户。例如,一个
尝试检索有关的信息
不属于好友的受保护用户
请求的用户将失败。
为了
目前,HTTP Basic
身份验证是唯一支持的
认证方案。什么时候
通过基本身份验证进行身份验证,使用
您注册的用户名或电子邮件
地址作为用户名组件。
会话 cookie 和基于参数
已知登录可以工作,但事实并非如此
官方支持。
OAuth
基于令牌的身份验证方案将
很快将作为实验提供
测试版发布。
因此,很高兴了解复杂的证书和 PKI 内容,但世界似乎没有它们也能正常运转。