chrome.webAuthenticationProxy

说明

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

权限

webAuthenticationProxy

可用性

Chrome 115 及更高版本 MV3+

类型

CreateRequest

属性

  • requestDetailsJson

    string

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

  • requestId

    number

    请求的不透明标识符。

CreateResponseDetails

属性

  • error

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

  • requestId

    number

    CreateRequestrequestId

  • responseJson

    字符串(可选)

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

DOMExceptionDetails

属性

  • 信息

    string

  • name

    string

GetRequest

属性

  • requestDetailsJson

    string

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

  • requestId

    number

    请求的不透明标识符。

GetResponseDetails

属性

  • error

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

  • requestId

    number

    CreateRequestrequestId

  • responseJson

    字符串(可选)

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

IsUvpaaRequest

属性

  • requestId

    number

    请求的不透明标识符。

IsUvpaaResponseDetails

属性

  • isUvpaa

    boolean

  • requestId

    number

方法

attach()

Promise
chrome.webAuthenticationProxy.attach(
  callback?: function,
)

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

远程桌面扩展程序通常会在检测到向该主机附加远程会话后调用此方法。如果此方法未返回任何错误,系统会暂停对 WebAuthn 请求的常规处理,并触发来自此扩展程序 API 的事件。

如果已经附加了其他扩展程序,此方法会失败并返回错误。

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

请参考 onRemoteSessionStateChange 事件,指示远程会话连接从原生应用更改为(可能已暂停)扩展程序。

参数

  • callback

    函数(可选)

    callback 参数如下所示:

    (error?: string)=>void

    • error

      字符串(可选)

返回

  • Promise<字符串|未定义>

    Manifest V3 及更高版本支持 promise,但提供回调以实现向后兼容性。您不能在同一个函数调用中同时使用这两者。promise 使用传递给回调函数的同一类型进行解析。

completeCreateRequest()

Promise
chrome.webAuthenticationProxy.completeCreateRequest(
  details: CreateResponseDetails,
  callback?: function,
)

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

参数

返回

  • Promise<void>

    Manifest V3 及更高版本支持 promise,但提供回调以实现向后兼容性。您不能在同一个函数调用中同时使用这两者。promise 使用传递给回调函数的同一类型进行解析。

completeGetRequest()

Promise
chrome.webAuthenticationProxy.completeGetRequest(
  details: GetResponseDetails,
  callback?: function,
)

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

参数

  • callback

    函数(可选)

    callback 参数如下所示:

    ()=>void

返回

  • Promise<void>

    Manifest V3 及更高版本支持 promise,但提供回调以实现向后兼容性。您不能在同一个函数调用中同时使用这两者。promise 使用传递给回调函数的同一类型进行解析。

completeIsUvpaaRequest()

Promise
chrome.webAuthenticationProxy.completeIsUvpaaRequest(
  details: IsUvpaaResponseDetails,
  callback?: function,
)

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

参数

返回

  • Promise<void>

    Manifest V3 及更高版本支持 promise,但提供回调以实现向后兼容性。您不能在同一个函数调用中同时使用这两者。promise 使用传递给回调函数的同一类型进行解析。

detach()

Promise
chrome.webAuthenticationProxy.detach(
  callback?: function,
)

移除此扩展程序不再是活跃的 Web Authentication API 请求代理。

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

请参考 onRemoteSessionStateChange 事件,指示远程会话连接从原生应用更改为(可能已暂停)扩展程序。

参数

  • callback

    函数(可选)

    callback 参数如下所示:

    (error?: string)=>void

    • error

      字符串(可选)

返回

  • Promise<字符串|未定义>

    Manifest V3 及更高版本支持 promise,但提供回调以实现向后兼容性。您不能在同一个函数调用中同时使用这两者。promise 使用传递给回调函数的同一类型进行解析。

活动

onCreateRequest

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

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

参数

onGetRequest

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

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

参数

  • callback

    功能

    callback 参数如下所示:

    (requestInfo: GetRequest)=>void

onIsUvpaaRequest

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

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

参数

onRemoteSessionStateChange

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

如果向该扩展程序关联的原生应用写入文件,且该文件在默认用户数据目录内名为 WebAuthenticationProxyRemoteSessionStateChange 的目录中,且文件名与该扩展程序的 ID 相同,则会触发此事件。

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

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

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

参数

  • callback

    功能

    callback 参数如下所示:

    ()=>void

onRequestCanceled

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

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

参数

  • callback

    功能

    callback 参数如下所示:

    (requestId: number)=>void

    • requestId

      number