Facebook、Dropbox或Twitter等开发者网站是如何生成应用程序ID的



我在一个开发者平台上工作,当开发者注册他们的应用程序以使用我们的平台时,需要从FB、dropbox等网站生成应用程序ID,常见的步骤是开发者指定应用程序显示名称,为新应用程序进行一些权限配置,然后它将生成唯一的应用程序ID和应用程序机密。

我的问题是他们是如何实现的,比如算法、机制、最佳实践等等?任何帮助和细节都将不胜感激!

应用程序ID通常是大数字或随机生成的字母数字字符序列。例如,Twitter使用了一个由22个字母数字字符组成的序列。应用程序ID不是秘密的,因为通常需要将它们放在客户端代码中才能进行API调用。您可以使用自己选择的语言生成一个。参见Python中的这一行,例如:

import random, string
app_id = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(20)) # 20 being the size of the App ID you're wanting

另一方面,密钥是无法猜测的唯一标识符或非常长的字符串。它们不是公共的,永远不应该对公众可用(例如在JavaScript代码中)。这并不意味着您应该使用复杂的算法来生成它们。UUID(或GUID,取决于您喜欢如何调用它)在这里是完全可以接受的,但为了增加安全性,您可能需要将它们安全地存储在数据库中(例如加密的),以防被坏人丢弃。同样,在Python中,它可以归结为以下两行:

import uuid
secret_key = uuid.uuid1()

密钥在服务器和开发人员代码之间的私人对话中使用,因此您应该使用它们来证明开发人员知道他的密钥及其应用程序ID。例如,Twitter要求所有API请求都使用开发人员的密钥加上临时挑战的组合进行签名。开发人员代码中计算出的HMAC-SHA1签名证明他既知道自己的密钥,也知道Twitter API发送的之前的秘密挑战。

因此,复杂的部分不是生成应用程序ID或密钥:而是编写安全代码,以确保您与正确的开发人员交谈:)为了获得一些灵感,看看(你似乎已经开始这样做了)Facebook、Twitter、LinkedIn或Google+等知名API,看看"大公司"是如何处理这类问题的。

最新更新