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

浏览器扩展MSAL认证代码含Client ID,能否推送至GitHub?

MSAL Client ID 公开仓库推送的安全问题

能不能直接把带真实Client ID的代码推去公开GitHub?

绝对不行。虽说浏览器扩展这类Public Client的Client ID本身不算严格保密的信息(Azure AD里Public Client不需要存客户端密钥),但硬编码到公开代码里纯属给自己找麻烦——比如有人拿你的Client ID做钓鱼页面,诱导用户授权,要是你给应用开了太宽的权限,风险更大。

别人拿到我的Client ID能用吗?

得看你Azure AD应用的配置:如果你严格指定了重定向URI是你扩展的专属地址,那别人就算拿到Client ID,在其他域名下发起的认证请求会被Azure AD直接拒绝。但要是你配置了允许任意URI,或者有其他配置漏洞,就可能被滥用。

安全推送的解决办法

针对浏览器扩展的场景,给你几个实用方案:

  • 用扩展存储存配置:把Client ID放到chrome.storage或者browser.storage里,要么让用户在扩展设置页自行输入(如果是通用型扩展),要么打包的时候再把真实值注入进去。
  • 构建工具+环境变量:开发时用环境变量存Client ID,用Webpack、Vite这类工具在构建阶段把变量替换到代码里,仓库里只留占位符就行。
  • 锁死Azure AD配置:如果非得公开代码,一定要把应用的重定向URI严格限制为你的扩展专属地址,同时把权限缩到最小必要范围,尽量降低滥用风险。

修改后的代码示例(用占位符):

// Microsoft Authentication Library (MSAL) instance
// Client ID is the Application (client) ID GUID from the Azure portal
const msalInstance = new msal.PublicClientApplication({
    auth: {
        authority: "https://login.microsoftonline.com/common/",
        clientId: process.env.MSAL_CLIENT_ID || "YOUR_CLIENT_ID_PLACEHOLDER",
        redirectUri: redirectUri,
        postLogoutRedirectUri: redirectUri
    },
    cache: {
        cacheLocation: "localStorage"
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:27:30