2012-03-12 40 views
1

我有我的服务(基于JSON的RPC),我想保护它免受不允许的程序员滥用。我自己的API密钥到我的RPC服务器

我知道很多API使用private/public API Key系统,当1个密钥滥用连接时,他们只能杀死这一个服务。如何以简单快捷的方式做到这一点?主要我只需要知道哪些算法应该用于生成和检查密钥以及什么时候(在启动连接或可能是每个请求时)。

另外我使用Google AppEngine和Python作为服务器。

回答

1

快速/简单的方法是产生谁拥有对服务的访问每个开发人员的唯一密钥:

import random, string 

key = "".join([random.choice(string.letters + string.digits + string.punctuation) for _ in xrange(64)]) 

,并让用户包括他们对您的服务的每一个请求,这个键(可以根据密钥跟踪使用情况并禁止滥用密钥)

这是最基本的方法。如果您需要的不仅仅是API密钥跟踪,例如加密和/或授权,您可以选择已建立的在线协议(例如OAuth)

+0

如果要生成唯一密钥,您可能需要查看UUID。 http://docs.python.org/library/uuid.html – specialscope 2012-03-13 11:37:50

+0

这应该怎么回答这个问题?他要求如何生成和*检查*键。生成密钥并将其包含在响应中并不能保护任何内容。 – aschmid00 2012-03-13 13:17:16

+0

@ aschmid00 - 当用户在请求中包含提供的密钥时,只需将其解析(以服务运行的任何格式(在本例中为JSON变量))并根据数据存储检查该密钥。我没有包含任何代码来将密钥保存到用户模型,因为OP是关于如何生成密钥并进行检查的,我假设将密钥存储在每个用户的基础上是显而易见的。鉴于我提出的方法,检查密钥是微不足道的。 – someone1 2012-03-13 15:01:12

相关问题