Google OAuth - 客户端 ID 的存储位置

Google OAuth - Where to Store Client ID

我按照此 link 允许我的用户通过 google 进行身份验证:
https://dev.to/jorgecf/integrating-google-authentication-with-your-angular-app-4j2a

但是,我的 UI 代码中必须包含我的 Google 客户端 ID:

return pload.then(async () => {
  await gapi.auth2
    .init({ client_id: 'abc123' })  // Put my client ID here. How should I store this?
    .then(auth => {
      this.gapiSetup = true;
      this.authInstance = auth;
    });
});

这是安全问题吗?如果是这样,where/how 我会存储它吗?

我收到了类似的问题,所以我认为这是一个有效的问题。

Oauth2 流程需要 client_id int 浏览器,因此不是安全问题。

为什么? :因为这就是 OAUTH2 SPECIFICATION

的定义方式

为什么需要 client_id?

您的 angular 代码需要 client_id 来生成 auth url 然后执行重定向到那个 url .无论 oauth2 提供程序(google、facebook 等)如何,url 都具有以下语法:

https://auth.acme.com/auth?response_type=code&redirect_uri=https://myweb.com/callback&client_id=******

Note redirect_uri and client_id fields.

auth url 负责显示登录表单、接收凭据并执行重定向到 redirect_uri 发送 代码

什么是问题?

在您的前端(angular) 中设置秘密将是安全问题。

此机密必须与客户端 ID 和其他字段一起使用,以从 google 检索您的案例中的 access_token。如果您拥有正确的权限,此令牌将允许您使用 google api(驱动器、地图等)。

这个流程必须在你的后台

怎么偏隐藏呢?

在您的后端创建 auth url 并使用 302 http 代码 return 它到您的前端。浏览器将执行即时重定向。

我说的是部分,因为好奇的伙伴可以停止重定向(esc 键)或使用浏览器控制台并查看您的 auth url 其中包含 client_id 字段

欢迎使用此聊天室https://chat.whosebug.com/rooms/215054/oauth2-budy 提出与 oauth2 相关的其他问题

我一直使用的选项是部署一个包含您的网络静态内容的配置文件,并在其中包含Public Open Id Connect Settings

这是我的代码示例中的 example configuration file。当然,任何人都无法根据这些信息获得令牌 - 您还需要有效凭证。

UI 和 API 等组件通常会被推送到管道中:

  • 发展
  • 质量检查
  • 分期
  • 制作

您的持续交付流程可以处理向管道的每个阶段交付不同的设置。这样您的代码就干净了,从不包含任何硬编码值。