如何保护的RESTful API(How to protect RESTful API)

2019-07-17 17:27发布

我一直在寻找,以保护我的RESTful API中的一种方式。 这似乎很简单,但它似乎没有那么简单。 首先,我写的iOS应用程序连接到播放Framework服务器。 这一切都不具有任何与谷歌,Facebook,Twitter或LinkedIn(令人震惊,我知道)。 哦,我目前的计划并不需要自定义应用程序使用API​​的我,它只是我的应用程序暂且。

基本身份验证

似乎是简单的是一个基本的用户名/密码在/ AUTH方法来管理cookie的会话。 这可能得出一些呻吟为过于简单或弱但大多是移动身份快速验证会话密钥。 我的初始设置是每天到期的会话,但铅的iOS应用迫使登录每日证明是一个烦恼。

OAuth的

我张贴在iOS板问题和对收到的OAuth钝方向。 我的OAuth的研究始于但圣洁的sh * t是那么复杂和似乎没有成为任何服务器端的例子...只是很多人抱怨这是多么令人沮丧。 所有客户示例显示连接到谷歌,Facebook,Twitter和LinkedIn。 哦喜悦!

看着伊兰Hammer的约您好!OAuth1和OAuth2用户的咆哮后,似乎无果而终,继续和他OZ的想法(这看起来非常干净)仅在node.js中早期阶段

所以,我到宽阔的StackOverflow社区的问题是...你做什么保护您的REST API吗?

Answer 1:

我建议考虑由最大的球员使用的方法,即亚马逊Web服务或Windows Azure的- HMAC 。 虽然它不是在执行舒服,你可以看到它是值得信赖的技术。

总的想法是签署与密钥iOS的请求的部分(即标题),并尝试重新计算上的播放应用程序来验证请求是真实的,而不是操纵。 如果它不会失败,你可以(几乎)肯定的是,这是从别人,谁使用有效的密钥发送。

看看到Windows的文件以获得概念(我认为,对于常见的任务,您可以使用用于签名元素的数目较少)。

还有其他有趣的帖子 (基于AWS认证),这甚至更好地描述整个过程。

编辑

当然,你应该意识到在iOS设备上的认证和保护的API请求是不同的东西,即使你会断气,每15分钟的会议,你不能肯定有人不会听到它,然后就可以发送从外部假请求。 签署每个请求应尽量减少风险。

在另一方面,如果你签署的要求准备明确的规则和会写简短的文档(我建议,甚至为自己),你可以将它交付给其他开发人员,他将能够实现它的(几乎)任何平台,支持SHA256,所以你将有API准备好从3 - 第三方应用程序使用 - 如果你决定出版它的未来。



Answer 2:

由于游戏框架是在Java中,你可以使用的Apache四郎

我还没有使用它。(我虽然计划),所以我不知道这是否是最好的选择。



Answer 3:

只要做简单的东西,在一个自定义标题通过HTTPS发送的授权码/密码。



Answer 4:

因此,与基本身份验证方法唯一的问题是,用户每天都登录? 为什么不向用户提供一个选项,以挽救他的用户名/密码的设备上? 这样,他就可以安全性和便利性之间做出选择。



文章来源: How to protect RESTful API