Angular Google OAuth-在何处存储客户端ID

Angular Google OAuth-在何处存储客户端ID,angular,typescript,oauth-2.0,google-oauth,Angular,Typescript,Oauth 2.0,Google Oauth,我通过此链接允许我的用户通过google进行身份验证: 但是,我的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;

我通过此链接允许我的用户通过google进行身份验证:

但是,我的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;
    });
});

这是安全问题吗?如果是这样的话,我将在哪里/如何存储它?

我收到了类似的问题,因此我认为这是一个有效的问题

Oauth2流需要浏览器中的客户端id,因此不是安全问题

为什么因为OAUTH2规范就是这样定义的

为什么需要客户端id? 角度代码需要客户端id来生成身份验证url,然后执行到该url的重定向。无论oauth2提供商(google、facebook等)如何,该url都具有以下语法:

https://auth.acme.com/auth?response_type=code&redirect_uri=https://myweb.com/callback&client_id=******
注意重定向uri客户端id字段

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

什么是问题? 在你的前端(角度)有秘密将是安全问题

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

此流必须在您的后端中

如何隐藏它? 在后端创建身份验证url,并使用302 http代码将其返回到前端。浏览器将执行即时重定向

我说的是部分,因为好奇的budy可以停止重定向(esc键)或使用浏览器控制台查看包含客户端id字段的身份验证url


请随意使用这个房间询问与oauth2相关的其他问题。我收到了类似的问题,因此我认为这是一个有效的问题

Oauth2流需要浏览器中的客户端id,因此不是安全问题

为什么因为OAUTH2规范就是这样定义的

为什么需要客户端id? 角度代码需要客户端id来生成身份验证url,然后执行到该url的重定向。无论oauth2提供商(google、facebook等)如何,该url都具有以下语法:

https://auth.acme.com/auth?response_type=code&redirect_uri=https://myweb.com/callback&client_id=******
注意重定向uri客户端id字段

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

什么是问题? 在你的前端(角度)有秘密将是安全问题

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

此流必须在您的后端中

如何隐藏它? 在后端创建身份验证url,并使用302 http代码将其返回到前端。浏览器将执行即时重定向

我说的是部分,因为好奇的budy可以停止重定向(esc键)或使用浏览器控制台查看包含客户端id字段的身份验证url


请随意使用本会议室询问与oauth2相关的其他问题。我一直使用的选项是部署包含web静态内容的配置文件,并在其中包含公共开放Id连接设置

这是我的一个代码示例中的一个示例。当然,任何人都无法基于此信息获取令牌-此外,您还需要有效的凭据

通常情况下,UI和API等组件被推送到管道中:

  • 发展
  • 质量保证
  • 登台
  • 生产

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

我一直使用的选项是使用web静态内容部署配置文件,并在其中包含公共开放Id连接设置

这是我的一个代码示例中的一个示例。当然,任何人都无法基于此信息获取令牌-此外,您还需要有效的凭据

通常情况下,UI和API等组件被推送到管道中:

  • 发展
  • 质量保证
  • 登台
  • 生产
您的连续交付流程可以处理向管道的每个阶段交付不同的设置。您的代码是干净的,从不包含任何硬编码的值