You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase:如何为CLI应用添加身份验证功能

针对C# CLI应用对接Firebase Auth的身份验证方案

核心原则:绝对不要在CLI中打包Admin SDK或密钥

Firebase Admin SDK是给服务器端服务用的,拥有高权限操作能力,一旦打包到CLI这类客户端应用中,很容易被反编译提取密钥,直接导致整个Firebase项目的安全风险。CLI属于客户端应用,必须走用户级授权流程,用用户身份令牌访问受保护API。

具体实现步骤

1. 配置Firebase客户端应用

  • 登录Firebase控制台,为你的CLI创建一个新的**桌面应用(Desktop app)**类型的客户端ID,不要复用网站的客户端配置。
  • 记录该客户端的API_KEY、AUTH_DOMAIN等公开配置信息,这些可以安全嵌入CLI代码中(Firebase允许客户端持有这类公开配置)。

2. 在CLI中实现OAuth2授权流程(复用现有社交登录)

因为你的网站已经支持GitHub、Google登录,CLI可以直接复用这些身份提供商:

  • 在CLI中启动一个本地HTTP服务器(比如监听http://localhost:34567),作为OAuth2的回调地址,提前在Firebase控制台和对应身份提供商后台配置好这个回调地址。
  • 调用系统API打开默认浏览器,跳转到Firebase Auth的授权URL,带上你的客户端ID、回调地址、所需权限(如email、profile)。
  • 用户在浏览器完成登录后,Firebase会将授权码通过回调地址发送到本地HTTP服务器,CLI捕获该授权码。
  • 用授权码调用Firebase令牌交换API,换取id_token(访问令牌,有效期1小时)和refresh_token(刷新令牌,长期有效)。

3. 安全存储与维护会话

  • 将id_token和refresh_token加密后存储到用户本地目录:Linux用~/.config/your-cli/,Windows用%APPDATA%/your-cli/,Mac用~/Library/Application Support/your-cli/,禁止明文存储。
  • 每次调用云端API时,在请求头中携带Authorization: Bearer {id_token},由API端验证令牌合法性。
  • 当id_token过期时,自动用refresh_token向Firebase请求新的id_token,无需用户重新登录。

4. API端的令牌验证

  • 云端API继续使用Firebase Admin SDK,调用VerifyIdToken方法验证CLI传来的id_token,确认用户身份和权限后再返回数据。

关键避坑点

  • 永远不要把Firebase服务账号的密钥JSON文件打包到CLI中,这等同于泄露整个项目的控制权。
  • 不要自行实现令牌验证逻辑,完全依赖Firebase官方SDK处理,避免出现安全漏洞。
  • 本地存储令牌时必须加密,比如用C#的ProtectedData类(Windows)或跨平台加密库,防止本地恶意程序窃取令牌。

内容的提问来源于stack exchange,提问作者MetaCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:25:17