- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我们正在使用 WCF(目前是 .Net 3.5,但很快就会迁移到 .Net 4)构建一个 RESTful API。我们有一个功能框架,但它目前是不安全的。它需要能够从 .Net 应用程序以及 iOS、Android 和 Web 应用程序访问。
我们想使用描述的 HMAC 身份验证方案 here和 here ,但是在描述如何验证散列时,这两个示例似乎都分崩离析。第一个示例未能描述 UserKeys 对象(哈希表?),第二个示例缺少客户端和服务器端的 GetUserKey 方法。
任何人都可以解释如何在这些示例中生成/存储/检索/使用“用户 key ”/ token ,或者提供一个更好的示例(如果可能,提供源代码)如何在 RESTful 中使用 HMAC 授权WCF 服务?
编辑:经过更多研究,我们确定我们需要更多的“Authorization”技术而不是“Authentication”技术(语义?)。我们实现了基本授权并保护了 SSL 背后的 API。 Basic Authorization 使用与 HMAC Authentication 方案相同的来自 Web 请求的“Authorization” header ,但传递以 Base64 编码的用户名:密码字符串而不是 token 。这使我们能够根据我们的数据库对用户进行自定义验证,以确定该用户是否获得许可并具有适当的安全权限来访问所需的 API 方法。
我们当然乐于听取有关如何完成自定义用户名/密码验证的其他选项以及其他用于保护 API 的方法。
最佳答案
检索用户 key 只是一个实现细节,您可以按照自己喜欢的方式进行,但在服务器上,它通常与用户名一起存储在数据库中。
基本方法非常简单。
真正棘手的部分是与用户共享 key 并确保其安全。这就是为什么有些服务允许生成具有有限生命周期的共享 key ,这样您就可以将 key 交给第三方临时代表您工作。
关于c# - 如何在 RESTful WCF API 中实现 HMAC 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8363315/
我是一名优秀的程序员,十分优秀!