我正在编写一个 Chrome 扩展^,并希望允许用户通过其 Github 帐户进行身份验证(针对开发人员)。我不想仅仅为了身份验证而设置后端服务器,因为所有功能都可以在浏览器中离线完美运行。
我做了一些研究。似乎有两种选择可以在没有您自己的后端服务器的情况下实现 OAuth:
- 隐式授予,github does not support
- 使用一些其他服务(例如 Auth0)
我的问题是:
- 我可以在没有任何后端服务器的情况下通过用户的 Github 帐户对用户进行身份验证吗?
- 如果必须的话,身份验证流程是什么样的?
^没有认证功能的工具可以找到here .
最佳答案
我将根据我的研究回答我自己的问题。如果我的回答有误,请纠正我。
Can I authenticate a user via their Github account without any backend server?
简短的回答是肯定的。但你可能不想这样做。这是因为在 the second step ,您需要通过 POST
将 client_secret
发送回 Github。通常,由于 same origin policy,您无法 POST 到 Github.com
来自常规网页。 Extensions aren't so limited 。出于安全原因,您不希望将 client_secret
放入 JavaScript 中。
If I have to what does the authentication flow look like?
- 用户会被重定向以请求其 Github 身份。
- Github 会使用临时
代码
将用户重定向回您的网站。 - 您的应用程序(更可能是后端或 native 应用程序,但不是前端的 JavaScript)
POST
,其中包含client_id
、client_secret
和代码
。 - Github 在响应中包含
access_toke
。 - 您的应用使用用户的访问 token 访问 API。
关于github - 我可以在没有后端服务器的情况下通过 Chrome 扩展程序的 Github 帐户对用户进行身份验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46964929/