@axa-fr/oidc-client-service-worker

中文文档
7.29.8发布于 2026/10/15MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 18.1万

OpenID 连接和 OAuth 认证服务工作者

中文使用文档
文档目录5 节
  1. 如何运作
  2. 开始
  3. 信任域
  4. 部署和解决问题
  5. 议定书参考

@axa-fr/oidc-客户端-服务-工作

服务员 @axa-fr/oidc-client 财务报告和审定财务报表 @axa-fr/react-oidc它截取了OIDC的信号响应, 默认情况下在工人记忆中保留访问和刷新令牌,并添加访问 符合您信任域配置的请求的符号.

大多数应用程序应该安装一个客户端软件包,而不是使用此软件包 直接包。 客户负责工人登记和沟通.

如何运作

flowchart LR
    App["Browser application"] --> Client["OIDC client or React bindings"]
    Client <-->|"Messages and token placeholders"| Worker["OIDC service worker"]
    Worker <-->|"Token requests and responses"| Provider["OIDC provider"]
    App -->|"API request"| Worker
    Worker -->|"Access token on trusted requests"| API["Trusted API"]
    Config["OidcTrustedDomains.js"] --> Worker

应用程序可以使用符名元数据而不接收真实访问或 刷新符号 . showAccessToken: true 明确暴露访问符 应用程序 JavaScript 同时将刷新符号保存在工人中.

[大 托肯隔离并不妨碍XSS或CSRF. 仍然可以输入代码 申请中经认证的请求。 使用限制性内容安全 政策,防止脚本注射, 并强制授权您的 API .

开始

  1. 安装和配置 香草客户端 或者说 反应绑定。 。 。 .

  2. 创建您的应用程序的公共资产目录, 如果它不存在, 那么 运行您安装的客户端的复制命令 :

    # Vanilla client
    node ./node_modules/@axa-fr/oidc-client/bin/copy-service-worker-files.mjs public
    
    # React — use this instead
    node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public
    

    替换 public 如果您的框架服务于另一个目录的静态文件. 命令覆盖 OidcServiceWorker.js 但保留一个已存在的 OidcTrustedDomains.js。 。 。 .

  3. 替换样本条目为 public/OidcTrustedDomains.js 与您的提供者 和API URL,如下所述.

  4. 将这些字段添加到您的 OIDC 客户端配置 :

    const configuration = {
      ...oidcConfiguration,
      service_worker_relative_url: '/OidcServiceWorker.js',
      service_worker_only: true,
    };
    

    与 service_worker_only: true,认证需要工人的支持. 准备吧 false 只有您接受返回到 JavaScript 可访问浏览器时 当工人无法工作时,储存.

  5. 在您的应用程序中添加相应的复制命令 postinstall 剧本. 例如,对反应:

    {
      "scripts": {
        "postinstall": "node ./node_modules/@axa-fr/react-oidc/bin/copy-service-worker-files.mjs public"
      }
    }
    

    将这与现有的安装步骤合并,而不是取而代之. 调用复制的工人 每一个客户端升级.

信任域

保持提供者端点和 API 目的地分离 :

const trustedDomains = {
  default: {
    oidcDomains: [/^https:\/\/identity\.example\.com(?:\/|$)/],
    accessTokenDomains: [/^https:\/\/api\.example\.com(?:\/|$)/],
  },
};

default 是默认客户端配置名称。 添加匹配条目 每名客户端或 OidcProvider这些规则使用正则表达匹配, 包括当规则是弦。 锁定模式, 逃避主机名点, 以及 包含一个主机或路径边界,以使外观的 URL 不匹配. 包含 OIDC 实际终点来源 如果您的提供者服务于来自不同的发现、 标志或用户信息 师曰. 只允许接收此配置的 API 目的地 访问符; 不将演示许可列表复制到生产中 .

使用 oidcClient.fetchWithTokens(fetch) 在香草应用中或 useOidcFetch() 在反应。 特别是, allowMultiTabLogin: true 需求 oIDC 获取 包装器:其占位符识别出工人必须注入的符号的标签. 一个平地 fetch 无法提供这些信息.

见 客户端的服务-工作指南 附加选项,包括 DPoP、访问的可见度和请求 处理.

部署和解决问题

  • 在 HTTPS 上同时服务您的应用程序来源的 JavaScript 文件 (当地东道主支持发展).
  • 工人必须控制使用它的页面。 在源头为它服务 是最简单的设置;在子路径下托管时要说明工人的范围.
  • 将文件作为 JavaScript 服务,而不是用于 SPA 路由的 HTML 倒置 . 如果 注册失败 .
  • 保持工人版本与客户端对齐. 编辑可信域文件, 未生成 OidcServiceWorker.js。 。 。 .
  • 如果 API 请求返回 401, 请检查活动的配置名称, 匹配 accessTokenDomains 条目,以及您是否正在使用 OIDC 获取包装. API还必须接受该标志的发行者,受众,和范围.
  • 在改变工人资产后,检查哪个工人版本控制了您的页面; 已经打开的标签可能仍由年长的工人控制.

这个 财务问题 涵盖更广泛的安全和一体化问题.

议定书参考

大多数应用程序不需要直接发送工人信息. 习惯 一体化, PROTOCOL.md 描述已版本的消息 信封、有效载荷、代号占位符、存储密钥和兼容性保证.

协议常数和类型从 @axa-fr/oidc-client-service-worker/protocol 并再由 @axa-fr/oidc-client。 。 。 .

用于源开发, 使用根 贡献命令 和已死的锁文件。 保持本套件的Vitest和覆盖版本对齐.

回到项目概况

版本与发布记录

@axa-fr/oidc-client-service-worker 共发布 261 个版本,首次发布于 2023/07/23;过去 12 个月发布了 37 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
7.29.8latest2026/10/1523 天前
7.29.72026/10/1325 天前
7.29.62026/09/201 个月前
7.29.52026/09/191 个月前
7.29.42026/09/191 个月前
7.29.32026/09/131 个月前

关于 @axa-fr/oidc-client-service-worker 的常见问题

@axa-fr/oidc-client-service-worker 是什么?

OpenID 连接和 OAuth 认证服务工作者

如何安装 @axa-fr/oidc-client-service-worker?

在项目目录运行 npm install @axa-fr/oidc-client-service-worker,或使用 pnpm add / yarn add / bun add。

@axa-fr/oidc-client-service-worker 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@axa-fr/oidc-client-service-worker 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@axa-fr/oidc-client-service-worker 可以商用吗?

@axa-fr/oidc-client-service-worker 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@axa-fr/oidc-client-service-worker 的下载量有多少?

根据 npm 官方下载统计,@axa-fr/oidc-client-service-worker 在 2026/10/08 – 2026/11/06 这 30 天内被下载 181,279 次,日均约 6,043 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@axa-fr/oidc-client-service-worker 还在维护吗?

最新版本 7.29.8 发布于 2026/10/15(23 天前);至今共发布 261 个版本,其中过去 12 个月发布了 37 个;首次发布于 2023/07/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。