我们正在使用WCF构建RESTful API(目前是.Net 3.5,但很快将移动到.Net 4)。我们已经有了一个功能框架,但目前没有安全保障。它需要从.Net应用程序以及iOS、Android和Web应用程序中访问。
我们想使用HMAC身份验证方案,如这里和这里所述,但这两个示例似乎在描述如何验证哈希时出现问题。第一个示例未能描述UserKeys对象(哈希表?),而第二个示例缺少客户端和服务器端的GetUserKey方法。
有人能够解释这些示例中“用户密钥”/令牌是如何生成/存储/检索/使用的,或者提供一个更好的示例(如果可能的话,包括源代码)来使用HMAC授权在RESTful WCF服务中吗?
编辑: 经过更多的研究,我们确定需要更多的“授权”技术而不是“认证”技术(语义?)。我们实现了基本授权并在SSL后面保护了API。基本授权使用与HMAC 身份验证方案相同的Web请求中的“Authorization”标头,但传递编码为Base64的用户名:密码字符串,而不是令牌。这使我们能够根据我们的数据库自定义验证用户,以确定用户是否有权访问所需的API方法并具有适当的安全权限。 当然,我们非常乐意听取有关如何完成自定义用户名/密码验证和其他保护API方法的其他选项。
我们想使用HMAC身份验证方案,如这里和这里所述,但这两个示例似乎在描述如何验证哈希时出现问题。第一个示例未能描述UserKeys对象(哈希表?),而第二个示例缺少客户端和服务器端的GetUserKey方法。
有人能够解释这些示例中“用户密钥”/令牌是如何生成/存储/检索/使用的,或者提供一个更好的示例(如果可能的话,包括源代码)来使用HMAC授权在RESTful WCF服务中吗?
编辑: 经过更多的研究,我们确定需要更多的“授权”技术而不是“认证”技术(语义?)。我们实现了基本授权并在SSL后面保护了API。基本授权使用与HMAC 身份验证方案相同的Web请求中的“Authorization”标头,但传递编码为Base64的用户名:密码字符串,而不是令牌。这使我们能够根据我们的数据库自定义验证用户,以确定用户是否有权访问所需的API方法并具有适当的安全权限。 当然,我们非常乐意听取有关如何完成自定义用户名/密码验证和其他保护API方法的其他选项。