browser.webAuthenticationProxy

说明

借助 chrome.webAuthenticationProxy API,在远程主机上运行的远程桌面软件可以拦截 Web Authentication API (WebAuthn) 请求,以便在本地客户端上处理这些请求。

权限

webAuthenticationProxy

可用性

Chrome 115+ browser.*(自 Chrome 148 起) MV3+

类型

CreateRequest

属性

  • requestDetailsJson

    字符串

    传递给 navigator.credentials.create() 的 PublicKeyCredentialCreationOptions,序列化为 JSON 字符串。序列化格式与 PublicKeyCredential.parseCreationOptionsFromJSON() 兼容。

  • requestId

    数值

    请求的不透明标识符。

CreateResponseDetails

属性

  • 错误

    远程请求生成的 DOMException(如果有)。

  • requestId

    数值

    CreateRequest 的 requestId。

  • responseJson

    字符串 可选

    PublicKeyCredential(由远程请求生成,如有),通过调用 href="https://w3c.github.io/webauthn/#dom-publickeycredential-tojson"> PublicKeyCredential.toJSON() 序列化为 JSON 字符串。

DOMExceptionDetails

属性

  • 私信

    字符串

  • name

    字符串

GetRequest

属性

  • requestDetailsJson

    字符串

    传递给 navigator.credentials.get() 的 PublicKeyCredentialRequestOptions,序列化为 JSON 字符串。序列化格式与 PublicKeyCredential.parseRequestOptionsFromJSON() 兼容。

  • requestId

    数值

    请求的不透明标识符。

GetResponseDetails

属性

  • 错误

    远程请求生成的 DOMException(如果有)。

  • requestId

    数值

    CreateRequest 的 requestId。

  • responseJson

    字符串 可选

    PublicKeyCredential(由远程请求生成,如有),通过调用 href="https://w3c.github.io/webauthn/#dom-publickeycredential-tojson"> PublicKeyCredential.toJSON() 序列化为 JSON 字符串。

IsUvpaaRequest

属性

  • requestId

    数值

    请求的不透明标识符。

IsUvpaaResponseDetails

属性

  • isUvpaa

    布尔值

  • requestId

    数值

方法

attach()

browser.webAuthenticationProxy.attach(): Promise<string | undefined>

将此扩展程序设为活跃的 Web Authentication API 请求代理。

远程桌面扩展程序通常会在检测到远程会话连接到此主机后调用此方法。此方法成功返回后,WebAuthn 请求的常规处理会暂停,并触发此扩展程序 API 的事件。

如果已附加其他扩展程序,此方法会失败并报错。

附加的扩展程序必须在远程桌面会话结束后调用 detach(),才能恢复常规 WebAuthn 请求处理。如果扩展程序被卸载,它们会自动分离。

请参阅 onRemoteSessionStateChange 事件,了解如何发出远程会话连接从原生应用更改为(可能已暂停的)扩展程序的信号。

返回

  • Promise<string | undefined>

completeCreateRequest()

browser.webAuthenticationProxy.completeCreateRequest(
  details: CreateResponseDetails,
)
: Promise<void>

报告 navigator.credentials.create() 调用的结果。扩展程序必须针对其收到的每个 onCreateRequest 事件调用此方法,除非请求已取消(在这种情况下,系统会触发 onRequestCanceled 事件)。

参数

返回

  • 承诺<void>

completeGetRequest()

browser.webAuthenticationProxy.completeGetRequest(
  details: GetResponseDetails,
)
: Promise<void>

报告 navigator.credentials.get() 调用的结果。扩展程序必须针对其收到的每个 onGetRequest 事件调用此方法,除非请求已取消(在这种情况下,系统会触发 onRequestCanceled 事件)。

参数

返回

  • 承诺<void>

completeIsUvpaaRequest()

browser.webAuthenticationProxy.completeIsUvpaaRequest(
  details: IsUvpaaResponseDetails,
)
: Promise<void>

报告 PublicKeyCredential.isUserVerifyingPlatformAuthenticator() 调用的结果。对于收到的每个 onIsUvpaaRequest 事件,扩展程序都必须调用此方法。

参数

返回

  • 承诺<void>

detach()

browser.webAuthenticationProxy.detach(): Promise<string | undefined>

移除此扩展程序,使其不再作为活跃的 Web Authentication API 请求代理。

当扩展程序检测到远程桌面会话已终止时,通常会调用此方法。此方法返回后,该扩展程序将不再是有效的 Web Authentication API 请求代理。

请参阅 onRemoteSessionStateChange 事件,了解如何发出远程会话连接从原生应用更改为(可能已暂停的)扩展程序的信号。

返回

  • Promise<string | undefined>

事件

onCreateRequest

browser.webAuthenticationProxy.onCreateRequest.addListener(
  callback: function,
)

在发生 WebAuthn navigator.credentials.create() 调用时触发。扩展程序必须通过调用 completeCreateRequest() 并提供 requestInfo 中的 requestId 来提供响应。

参数

onGetRequest

browser.webAuthenticationProxy.onGetRequest.addListener(
  callback: function,
)

在发生 WebAuthn navigator.credentials.get() 调用时触发。扩展程序必须通过调用 completeGetRequest() 并传入 requestInfo 中的 requestId 来提供响应

参数

  • callback

    函数

    callback 参数如下所示:

    (requestInfo: GetRequest) => void

onIsUvpaaRequest

browser.webAuthenticationProxy.onIsUvpaaRequest.addListener(
  callback: function,
)

在发生 PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() 调用时触发。扩展程序必须通过调用 completeIsUvpaaRequest() 并传入 requestInfo 中的 requestId 来提供响应

参数

onRemoteSessionStateChange

browser.webAuthenticationProxy.onRemoteSessionStateChange.addListener(
  callback: function,
)

与此扩展程序关联的原生应用可以通过在默认用户数据目录内名为 WebAuthenticationProxyRemoteSessionStateChange 的目录中写入一个名称与扩展程序 ID 相同的文件,来触发此事件

文件内容应为空。也就是说,无需更改文件内容即可触发此事件。

当扩展程序 Service Worker 可能处于暂停状态时,原生主机应用可以使用此事件机制来指示可能的远程会话状态更改(即从分离状态更改为附加状态,或反之)。在此事件的处理程序中,扩展程序可以相应地调用 attach() 或 detach() API 方法。

事件监听器必须在加载时同步注册。

参数

  • callback

    函数

    callback 参数如下所示:

    () => void

onRequestCanceled

browser.webAuthenticationProxy.onRequestCanceled.addListener(
  callback: function,
)

在 onCreateRequest 或 onGetRequest 事件被取消(因为 WebAuthn 请求被调用方中止,或因为请求超时)时触发。收到此事件后,扩展程序应取消在客户端处理相应请求。请求取消后,扩展程序无法完成该请求。

参数

  • callback

    函数

    callback 参数如下所示:

    (requestId: number) => void

    • requestId

      数值