添加一个连接器只要四个字段、大约一分钟,而几乎所有人都卡在同一个字段上。客户端问你该如何认证,给出 OAuth 和请求头两个选项,而正确答案是没人料到的第三个:无。
为什么“无”才对
密钥已经在地址里了。指向它的连接器,指向的是一扇对任何持有这个 URL 的人都已经敞开的门,所以 OAuth 已经没有什么可安排的了。偏要选 OAuth,客户端就会去找一个根本不会回应的授权服务器;再加一个 bearer 头,就等于向一个并没有要求凭证的服务器发去了第二份凭证。
这不是绕开安全的捷径。它把全部安全集中到了一个地方 — 地址 — 一个你看得见、能复制、能粘贴、能吊销的东西,而不是一套你得相信三方都实现正确了的流程。
心思该花在哪里
- 把地址当作凭证,因为它就是凭证。它只该放在客户端里,别处都不要放 — 不要放进共享文档,也不要出现在设置的截图里。
- 愿意的话,每个客户端各生成一把。吊销一把密钥,只会让建立在它之上的连接器失效。
- 助手只有一项工作时,用范围更窄的地址。只能读收件箱的连接器,不会误发 LinkedIn 帖子。
- 一旦泄露,立刻吊销。吊销是即时的,生成新的只要一秒。
答案的另一半
一个敞开的地址之所以经得起,是因为它背后的东西自己就很谨慎。营销活动每一轮只做一个动作,当天的额度按已经做过的动作来算。任何带着你名字的内容都要等你说“可以”。LinkedIn 发来的暂停,会被当作暂停来应对,而不是不停重试直到被限制。哪怕助手拿着这个地址,也没法让你的账号一分钟做二十件事,因为这里没有任何东西做得到。
如果这篇你只记一句:客户端问你怎么认证时,回答“无”,并让请求头保持为空。
常见问题
如果客户端不让我选“无”怎么办?
那说明它要的是请求头,而不是一次身份认证,这时密钥就放到请求头里:X-API-KEY,配上不带密钥路径的普通地址。值得用的客户端都提供“无”;不提供的多半是旧版本,更新一下是更短的路。
所有的用一把密钥,还是各用各的?
如果你用不止一个客户端,就各用各的。它们不花钱,控制台会列出每把密钥上次使用的时间,吊销其中一把时,失效的只是一个连接器,而不是全部。
我吊销一把密钥的那一刻会发生什么?
建立在它之上的一切都立刻不再应答。一个仍指向已吊销密钥的连接器会报告说它没有工具,这和地址输错时的报告一模一样 — 所以要有意识地吊销,并且在去找哪里坏了之前,先生成替代的密钥。