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

如何在Chrome扩展中集成基于SAML的SSO获取saml_token?

可行实现方案建议

方案1:通过网络请求监听捕获saml_token

  • 利用Chrome扩展的webRequest API,监听登录流程中的重定向请求来提取令牌
  • 具体步骤:
    1. 在manifest.json中声明webRequest、webRequestBlocking权限,同时根据用户输入的application_host动态申请对应主机权限(避免过度申请<all_urls>权限)。
    2. 用户点击扩展内的SSO按钮时,调用chrome.tabs.create打开application_host/ssologin页面,触发原生登录流程。
    3. 在后台脚本中注册chrome.webRequest.onBeforeRedirect或chrome.webRequest.onCompleted事件,过滤匹配application_host/login?saml_token=*的请求。
    4. 从请求URL中解析出saml_token,存储到chrome.storage.local供后续API调用使用。

方案2:修改应用ACS端点的重定向规则(需应用配置权限)

  • 如果能修改目标内部应用的SSO配置,调整ACS端点的最终重定向地址适配Chrome扩展的回调要求
  • 具体步骤:
    1. 在扩展manifest.json中配置oauth2字段,指定redirect_uri为https://<app-id>.chromiumapp.org/callback,同时声明identity权限。
    2. 修改应用的SSO配置,将ACS端点处理完成后的重定向URL设置为上述回调地址,并附加saml_token参数(例如https://<app-id>.chromiumapp.org/callback?saml_token=TOKEN)。
    3. 使用chrome.identity.launchWebAuthFlow启动认证流程,传入url为application_host/ssologin,redirect_uri为配置的回调地址。
    4. 认证完成后,launchWebAuthFlow会返回携带saml_token的回调URL,解析后即可获取令牌。

方案3:动态注入内容脚本捕获令牌

  • 通过内容脚本注入到最终登录页面,读取URL中的令牌并传递给扩展后台
  • 具体步骤:
    1. 在manifest.json中声明scripting权限,用于动态注册内容脚本。
    2. 用户输入application_host并点击登录按钮后,调用chrome.scripting.registerContentScripts注册匹配application_host/login?saml_token=*的内容脚本。
    3. 内容脚本解析当前URL的saml_token参数,通过chrome.runtime.sendMessage发送给后台脚本。
    4. 后台脚本接收消息后,将令牌存储到扩展本地存储中,同时注销临时注册的内容脚本。

方案4:弹出窗口监听URL变化捕获令牌

  • 在扩展弹出页中打开登录窗口,监听窗口地址变化提取令牌
  • 具体步骤:
    1. 在扩展弹出页(popup.html)中添加登录按钮,点击时用window.open打开application_host/ssologin页面,保留窗口引用。
    2. 设置定时器定期检查窗口的location.href,当检测到URL包含saml_token时,解析参数。
    3. 获取令牌后关闭窗口,将令牌存储到扩展本地存储中。
  • 注意:需要引导用户允许弹出窗口,且需确保扩展拥有目标主机的权限以避免跨域限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 23:42:35