这是我的小API,有两个网址:
/api/location/list -> GET
/api/location/detail -> GET
我正在寻找一个通过身份验证来保护此服务的流程。目前,只有一个用户(我)可以访问它。
我认为oAuth在我的案例中过于复杂,我发现这个资源用于设计a simple API。 我理解私钥/公钥和HMAC的原理,但我对此非常关注:
假设我的web服务被带有GET动词的ajax请求使用。我有/api/location/list?apikkey=userid&hash=abcde
之类的东西。
最终用户可以在请求期间(通过简单的chrome控制台)轻松嗅探网络,捕获完整的URL并直接访问服务多次(我认为这是重播攻击的情况)。
差异资源谈论时间戳或nonce以使请求唯一但我在执行方面有点迷失。
有什么想法吗?
答案 0 :(得分:1)
您可以尝试使用比Oauth更简单的JWToken auth规范,但如果可能,请将授权数据作为url参数使用,并改为使用Header的请求。 如果需要,还要考虑tcp级别的ssl加密。
答案 1 :(得分:1)
也许您可以尝试使用基于令牌的方法来实现安全性,如本博文中所述:
我们的想法是对身份验证资源(可能是您的应用程序的一部分)进行身份验证,以获取可在过期时使用刷新令牌刷新的临时令牌。
使用HTTPS,似乎是合适的。
我认为这取决于您期望的安全级别。基于签名的身份验证(AWS方法)非常棒,但手动实现起来有点复杂。
希望它可以帮到你, 亨利