news 2026/4/3 2:43:24

Google身份验证库Node.js版完全使用指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Google身份验证库Node.js版完全使用指南

Google身份验证库Node.js版完全使用指南

【免费下载链接】google-auth-library-nodejs🔑 Google Auth Library for Node.js项目地址: https://gitcode.com/gh_mirrors/go/google-auth-library-nodejs

项目介绍

Google身份验证库(google-auth-library-nodejs)是Google官方支持的Node.js客户端库,专门用于处理OAuth 2.0授权和认证流程,让开发者能够安全地访问各种Google APIs。该库提供了统一的方式来管理认证流程,包括获取和刷新令牌,以及处理多种类型的凭据。

快速开始

安装依赖

npm install google-auth-library

基础用法示例

// 引入Google Auth库 const {GoogleAuth} = require('google-auth-library'); async function main() { // 创建GoogleAuth对象,指定所需权限 const auth = new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/cloud-platform', }); // 获取认证客户端 const client = await auth.getClient(); // 获取项目ID const projectId = await auth.getProjectId(); // 构建请求URL const url = `https://storage.googleapis.com/storage/v1/b?project=${projectId}`; // 发送请求 const res = await client.request({url}); // 打印结果 console.log(res.data); } main().catch(console.error);

认证方式详解

应用程序默认凭据(ADC)

ADC是Google推荐的身份验证方式,特别适合在Google Cloud平台上运行的应用程序。它会根据运行环境自动选择最合适的凭据类型。

const {GoogleAuth} = require('google-auth-library'); const auth = new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/cloud-platform', projectId: 'your-project-id', });

OAuth 2.0认证

适用于需要代表终端用户执行操作的场景。

const {OAuth2Client} = require('google-auth-library'); const keys = require('./oauth2.keys.json'); const oAuth2Client = new OAuth2Client({ clientId: keys.web.client_id, clientSecret: keys.web.client_secret, redirectUri: keys.web.redirect_uris[0] }); // 生成授权URL const authorizeUrl = oAuth2Client.generateAuthUrl({ access_type: 'offline', scope: 'https://www.googleapis.com/auth/userinfo.profile', });

JSON Web Tokens(JWT)

适用于服务器到服务器或服务器到API的通信场景。

const {JWT} = require('google-auth-library'); const keys = require('./jwt.keys.json'); const client = new JWT({ email: keys.client_email, key: keys.private_key, scopes: ['https://www.googleapis.com/auth/cloud-platform'], });

工作负载身份联邦

允许从AWS、Microsoft Azure或任何支持OpenID Connect(OIDC)的身份提供商访问Google Cloud资源。

AWS工作负载配置
# 生成AWS工作负载身份配置 gcloud iam workload-identity-pools create-cred-config \ projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$POOL_ID/providers/$AWS_PROVIDER_ID \ --service-account $SERVICE_ACCOUNT_EMAIL \ --aws \ --output-file /path/to/generated/config.json
Azure工作负载配置
# 生成Azure工作负载身份配置 gcloud iam workload-identity-pools create-cred-config \ projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$POOL_ID/providers/$AZURE_PROVIDER_ID \ --service-account $SERVICE_ACCOUNT_EMAIL \ --azure \ --output-file /path/to/generated/config.json

高级功能

身份令牌管理

// 获取身份令牌客户端 const {GoogleAuth} = require('google-auth-library'); const url = 'https://cloud-run-1234-uc.a.run.app'; const auth = new GoogleAuth(); const client = await auth.getIdTokenClient(url); const res = await client.fetch(url); console.log(res.data);

模拟凭据客户端

const {GoogleAuth, Impersonated} = require('google-auth-library'); async function main() { const auth = new GoogleAuth(); const sourceClient = await auth.getClient(); const targetClient = new Impersonated({ sourceClient: sourceClient, targetPrincipal: 'impersonated-account@projectID.iam.gserviceaccount.com', lifetime: 30, delegates: [], targetScopes: ['https://www.googleapis.com/auth/cloud-platform'] }); }

降级范围客户端

const {GoogleAuth, DownscopedClient} = require('google-auth-library'); const cabRules = { accessBoundary: { accessBoundaryRules: [ { availableResource: '//storage.googleapis.com/projects/_/buckets/bucket_name', availablePermissions: ['inRole:roles/storage.objectViewer'], availabilityCondition: { expression: 'resource.name.startsWith('projects/_/buckets/bucket_name/objects/customer-a')' } ], }, };

实际应用场景

云端应用认证

在Node.js应用中使用外部身份时,需要将roles/browser角色授予服务账户,同时确保启用Cloud Resource Manager API,以便从当前环境自动发现项目ID。

const auth = new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/cloud-platform', projectId: '<your-project-id>', });

工作负载联邦认证

对于不在Google Cloud上运行的应用,可以利用工作负载身份联邦,通过OpenID Connect认证方式接入AWS、Azure或其他兼容的身份提供商。

安全最佳实践

  1. 验证凭据配置:在将凭据配置提供给任何Google API或库之前,必须对其进行验证
  2. 限制访问权限:遵循最小权限原则
  3. 定期轮换凭据:确保凭据的安全性

项目结构说明

google-auth-library-nodejs/ ├── src/ │ ├── auth/ # 认证客户端实现 │ ├── crypto/ # 加密相关功能 │ └── index.ts # 主入口文件 ├── samples/ # 示例代码 ├── test/ # 测试文件 └── system-test/ # 系统测试

环境要求

  • Node.js版本:>=18
  • 支持的平台:Linux、Windows、macOS

总结

Google身份验证库为Node.js开发者提供了强大而灵活的身份认证解决方案。无论是简单的API调用还是复杂的企业级应用,该库都能提供可靠的安全保障和便捷的使用体验。

通过合理配置和使用各种认证方式,开发者可以构建出既安全又高效的云应用系统。

【免费下载链接】google-auth-library-nodejs🔑 Google Auth Library for Node.js项目地址: https://gitcode.com/gh_mirrors/go/google-auth-library-nodejs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/30 22:41:27

企业级ownCloud集群部署:构建高可用云存储平台的完整实践指南

企业级ownCloud集群部署&#xff1a;构建高可用云存储平台的完整实践指南 【免费下载链接】core :cloud: ownCloud web server core (Files, DAV, etc.) 项目地址: https://gitcode.com/gh_mirrors/core84/core ownCloud作为领先的开源文件同步与共享平台&#xff0c;通…

作者头像 李华
网站建设 2026/4/1 12:44:30

Wan2.2视频生成模型:消费级硬件的电影制作革命

Wan2.2视频生成模型&#xff1a;消费级硬件的电影制作革命 【免费下载链接】Wan2.2-T2V-A14B-Diffusers 项目地址: https://ai.gitcode.com/hf_mirrors/Wan-AI/Wan2.2-T2V-A14B-Diffusers 技术痛点&#xff1a;视频生成领域的成本与质量困境 当前AI视频生成市场正面临…

作者头像 李华
网站建设 2026/4/1 18:05:45

如何快速上手UXP Photoshop插件开发:终极入门指南

如何快速上手UXP Photoshop插件开发&#xff1a;终极入门指南 【免费下载链接】uxp-photoshop-plugin-samples 项目地址: https://gitcode.com/gh_mirrors/ux/uxp-photoshop-plugin-samples UXP Photoshop插件开发是现代创意工作流程中的重要技能&#xff0c;这个开源项…

作者头像 李华
网站建设 2026/4/2 7:04:58

PCB线宽和电流的关系:伺服控制系统应用解析

PCB线宽与电流的工程博弈&#xff1a;伺服驱动系统中的生死细节你有没有遇到过这样的情况&#xff1f;一块伺服驱动板&#xff0c;元器件选得无可挑剔&#xff0c;控制算法跑得丝滑流畅&#xff0c;可上电运行不到十分钟&#xff0c;MOSFET就“啪”地一声冒烟了。查电源&#x…

作者头像 李华
网站建设 2026/3/31 16:05:55

Async-Http-Client连接池健康检查完整指南:如何避免僵尸连接问题

Async-Http-Client连接池健康检查完整指南&#xff1a;如何避免僵尸连接问题 【免费下载链接】async-http-client Asynchronous Http and WebSocket Client library for Java 项目地址: https://gitcode.com/gh_mirrors/as/async-http-client 还在为HTTP连接池中的无效…

作者头像 李华
网站建设 2026/3/28 12:54:56

OpenPLC输入滤波配置:抗干扰接口参数调整教程

OpenPLC输入滤波实战&#xff1a;如何让工业信号不再“抽风”&#xff1f;你有没有遇到过这样的场景&#xff1f;一台包装机莫名其妙停机&#xff0c;查遍程序逻辑毫无问题&#xff0c;最后发现是气缸到位传感器的信号像中了邪一样频繁跳变&#xff1f;或者操作员按一下启动按钮…

作者头像 李华