2012-11-24 108 views
0

我正在制作一个私有API,客户端(应用程序)调用API提供程序并检索或发送信息。我需要一种方法来授权或识别哪个应用正在执行操作,并且如果它有权访问它,同一个应用会在用户签入的不同位置使用,并且可以使API调用从该位置获取信息,而不是从另一个位置获取信息,但我不确定是否允许通过使用API​​密钥或OAuth等验证方法来实现此目的。API身份/授权

+0

更多的信息是真的需要回答这个问题... – PearsonArtPhoto

+0

更多信息喜欢什么? – jtomasrl

回答

1

一般而言,您无法100%确定您的客户端是接收数据的客户端。黑客总能找到一种方法来欺骗你的程序。

尽管如此,还是有几种方法可以做点什么。最好的办法是让每个客户端拥有自己的密钥,然后以某种方式传递给服务器进行身份验证。而且这些密钥必须以某种方式安全地传递给服务器。这不太可能发生。该密钥将唯一标识每个客户端。如果任何客户滥用权限,他们可能会被拒绝。

下一步是如上所述创建密钥,使用公钥对其进行加密并将它们发送到服务器。如果你愿意,你甚至可以进行审批。

客户端查询服务器,产生一个数字的另一种解决方案。然后用户将该号码输入他们先前登录的网站。该号码需要适当复杂,并且只有几分钟才有效,以减少有人接管设备的风险。这适用于单向应用程序,如Netflix。

总而言之,这取决于您的程序需求。

+0

我将使用https + something。我在考虑每个客户端的密钥并使用基于散列的消息认证,如HMAC。我需要使用OAuth吗? – jtomasrl

+0

OAuth实际上是一种不同的融合方式,它旨在告诉一台服务器另一台服务器可以从中提取数据。我会为每个客户端创建一个密钥,并且从那里开始,基于哈希的消息传递身份验证可能会很好。 – PearsonArtPhoto