说明
借助 chrome.webAuthenticationProxy API,在远程主机上运行的远程桌面软件可以拦截 Web Authentication API (WebAuthn) 请求,以便在本地客户端上处理这些请求。
权限
webAuthenticationProxy可用性
类型
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 来提供响应。
参数
-
callback
函数
callback参数如下所示:(requestInfo: CreateRequest) => void
-
requestInfo
-
onGetRequest
browser.webAuthenticationProxy.onGetRequest.addListener(
callback: function,
)
在发生 WebAuthn navigator.credentials.get() 调用时触发。扩展程序必须通过调用 completeGetRequest() 并传入 requestInfo 中的 requestId 来提供响应
参数
-
callback
函数
callback参数如下所示:(requestInfo: GetRequest) => void
-
requestInfo
-
onIsUvpaaRequest
browser.webAuthenticationProxy.onIsUvpaaRequest.addListener(
callback: function,
)
在发生 PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() 调用时触发。扩展程序必须通过调用 completeIsUvpaaRequest() 并传入 requestInfo 中的 requestId 来提供响应
参数
-
callback
函数
callback参数如下所示:(requestInfo: IsUvpaaRequest) => void
-
requestInfo
-
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
数值
-