尝试允许我正在开发的CLI通过Web浏览器“登录”并获得用户帐户的访问令牌,类似于gcloud和github的CLI的做法。我意识到它将使用OAuth授权代码流。
但是client_secret
呢?我发现github cli根本不在乎暴露它,它就在源代码中:https://github.com/cli/cli/blob/6a8deb1f5a9f2aa0ace2eb154523f3b9f23a05ae/internal/authflow/flow.go#L25-L26
为什么这不是一个问题?或者是吗?
我尚未使用OAuth登录客户端
1条答案
按热度按时间hsgswve41#
标准
CLI应用程序是原生公用客户端,应该使用受权程式码流程+ PKCE,而不是固定的客户端密码。它也应该遵循RFC8252的流程,并使用本机HTTP(回送)URI接收浏览器回应。
本实施
看起来github代码here使用了一个客户端密码,而没有使用PKCE。如果使用这个库,你可能需要提供一个客户端密码,但是它不能对用户保密。任何用户都可以很容易地查看它,例如使用HTTP代理工具。
代码
如果基础结构允许您遵循这些标准,那么请尝试类似于此Node.js代码的内容。