pet*_*eld 3 javascript oauth github single-page-application octokit
我在 Angular 单页应用程序 (SPA) 中使用 GitHub API 客户端“ octokit/rest.js ”。鉴于它通常更安全,并且我对我的 GitHub 帐户使用 2 因素身份验证(仅密码是不够的),我想利用 OAuth 工作流程。我一直按照此处的说明获取访问令牌,然后使用它来构建 octokit 客户端:
login(token: string) {
this.client = new Octokit({
auth: `token ${token}`
});
}
Run Code Online (Sandbox Code Playgroud)
为了获取令牌,我必须制作一个简单的后端,其目的只是获取令牌并将其传递给前端,因为我还没有弄清楚如何从 SPA 中安全地执行此操作(它需要一个 client_secret,我无法在前端保持安全?)。它似乎有效,但我仍然有一些重要的问题:
ocotkit/rest.js 维护者在这里
在client_secret不能与客户端共享。OAuth 流程需要一个后端来保持client_secret安全。
另一种方法是使用您的用户名和密码创建令牌,在这种情况下,您不需要服务器组件。但通常用户可能不愿意与外部网站共享他们的登录凭据。但是对于个人/内部项目,这可能是最简单的方法。
let octokit = new Octokit({
auth: {
username: USERNAME,
password: PASSWORD,
on2fa () {
return prompt('Enter code')
}
}
})
octokit.oauthAuthorizations.createAuthorization({
scopes: [], // add scopes
note: 'token description'
})
.then(({ data: { token } }) => {
octokit = new Octokit({ auth: 'token ${token}' })
// octokit is now authenticated with token
})Run Code Online (Sandbox Code Playgroud)
请注意,令牌note必须是唯一的。如果您之前使用相同的笔记创建了令牌,则需要先使用不同的笔记或删除现有令牌。
我们目前正在考虑添加更多auth.*选项,以便在发送任何请求之前在内部为您创建令牌。如果您有兴趣,我们正在https://github.com/octokit/rest.js/pull/1293讨论此更改
| 归档时间: |
|
| 查看次数: |
558 次 |
| 最近记录: |