如何从Chrome扩展通过Azure/MSAL认证?redirect_uri问题
Chrome扩展中使用Azure MSAL认证的可行性方案
目前完全可以在Chrome扩展中通过Azure MSAL实现认证,不需要更换方案,问题出在redirect_uri的配置方式上——Chrome扩展的认证回调地址不能用https协议,而是要使用专属的chrome-extension://协议格式。
具体配置和实现要点:
- Azure AD应用配置:在Azure门户的应用注册中,选择"移动和桌面应用"平台,添加格式为
chrome-extension://<你的扩展ID>/callback.html的redirect_uri(callback.html是扩展内用于处理认证回调的本地页面,可自定义名称) - 获取扩展ID:开启Chrome开发者模式后,加载扩展即可在扩展管理页面看到ID;如果是已发布的扩展,ID是固定的,可从Chrome应用商店的扩展详情页获取
- MSAL初始化配置:在扩展的代码中初始化MSAL实例时,将
auth.redirectUri设置为和Azure AD中完全一致的chrome-extension://地址 - Manifest配置:如果使用Manifest V3,要确保回调页面被正确包含在扩展文件中,无需额外的跨域权限(因为是扩展本地资源);如果是Manifest V2,只需保证页面存在于扩展目录内即可
额外注意事项:
- 不要将Chrome扩展的认证配置归类到Azure AD的"Web"平台下,必须选择"移动和桌面应用",否则会出现redirect_uri不匹配的错误
- 测试环境(开发者模式加载的扩展)和生产环境(发布后的扩展)的ID不同,需要在Azure AD应用中分别添加对应的两个redirect_uri
- 使用MSAL.js v2及以上版本时,确保配置中没有强制要求https协议的参数,保持默认配置即可兼容
chrome-extension://协议
内容的提问来源于stack exchange,提问作者Paweł Bakuła
相关产品推荐
相关产品推荐

