无需服务器运行的应用可否使用OAuth?本地命令行应用如何处理回调?
本地命令行应用接入OAuth常见问题解答
接入OAuth是否必须部署公网服务器处理回调?
不需要,针对本地CLI场景有两种成熟的无公网服务器实现方案:
- 临时本地HTTP服务方案:绝大多数主流OAuth服务商都支持
http://127.0.0.1:{端口}格式的回调地址,不需要你提前部署公网服务,回调请求会直接发送到用户的本地环境。 - 手动复制授权码方案:如果用户环境无法启动本地HTTP服务,你可以在OAuth应用后台配置
urn:ietf:wg:oauth:2.0:oob这个特殊的离线回调地址,用户完成授权后页面会直接显示授权码,让用户手动粘贴到CLI终端即可完成流程,连临时服务都不需要启动。
临时启动本地服务获取回调响应后直接关闭是否可行?
完全可行,这也是当前本地CLI工具接入OAuth的标准实现逻辑:
- 你只需要提前在OAuth应用的后台将
http://127.0.0.1加入允许的回调地址列表即可,如果服务商不支持端口通配,你可以提前配置几个小范围的常用端口,或者启动服务前先探测本地空闲端口,再动态拼接回调地址传给OAuth授权端点。 - 这个临时HTTP服务只需要处理一次回调请求,拿到请求参数里的授权码之后就可以直接关闭,不会长期占用用户系统资源,也不存在额外的安全风险。
注意:拿到授权码后请直接在用户本地环境发起请求兑换Access Token,不要将授权码传输到第三方服务器,避免凭证泄露。
内容的提问来源于stack exchange,提问作者Stathis Kapnidis
相关产品推荐
相关产品推荐

