说明
借助 chrome.webAuthenticationProxy
API,在远程主机上运行的远程桌面软件可以拦截 Web 身份验证 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()
chrome.webAuthenticationProxy.attach(): Promise<string | undefined>
使此扩展程序成为有效的 Web 身份验证 API 请求代理。
远程桌面扩展程序通常会在检测到远程会话附加到此主机后调用此方法。一旦此方法在未出错的情况下返回,系统就会暂停对 WebAuthn 请求的常规处理,并引发来自此扩展 API 的事件。
如果已附加其他扩展服务,此方法会因错误而失败。
附加的扩展程序必须在远程桌面会话结束后调用 detach()
,以便恢复常规 WebAuthn 请求处理。如果扩展程序被卸载,则会自动变为分离状态。
请参阅 onRemoteSessionStateChange
事件,了解如何将远程会话附加从原生应用更改为(可能已暂停的)扩展程序。
返回
-
Promise<string | undefined>
completeCreateRequest()
chrome.webAuthenticationProxy.completeCreateRequest(
details: CreateResponseDetails,
): Promise<void>
报告 navigator.credentials.create()
调用的结果。扩展程序必须针对收到的每个 onCreateRequest
事件调用此方法,除非请求已取消(在这种情况下,系统会触发 onRequestCanceled
事件)。
参数
返回
-
Promise<void>
completeGetRequest()
chrome.webAuthenticationProxy.completeGetRequest(
details: GetResponseDetails,
): Promise<void>
报告 navigator.credentials.get()
调用的结果。扩展程序必须针对收到的每个 onGetRequest
事件调用此方法,除非请求已取消(在这种情况下,系统会触发 onRequestCanceled
事件)。
参数
- 详细信息
返回
-
Promise<void>
completeIsUvpaaRequest()
chrome.webAuthenticationProxy.completeIsUvpaaRequest(
details: IsUvpaaResponseDetails,
): Promise<void>
报告 PublicKeyCredential.isUserVerifyingPlatformAuthenticator()
调用的结果。扩展程序必须针对收到的每个 onIsUvpaaRequest
事件调用此方法。
参数
返回
-
Promise<void>
detach()
chrome.webAuthenticationProxy.detach(): Promise<string | undefined>
移除此扩展程序,使其不再作为有效的 Web 身份验证 API 请求代理。
当扩展程序检测到远程桌面会话已终止时,通常会调用此方法。此方法返回后,扩展程序将不再是有效的 Web 身份验证 API 请求代理。
请参阅 onRemoteSessionStateChange
事件,了解如何将远程会话附加从原生应用更改为(可能已暂停的)扩展程序。
返回
-
Promise<string | undefined>
事件
onCreateRequest
chrome.webAuthenticationProxy.onCreateRequest.addListener(
callback: function,
)
在发生 WebAuthn navigator.credentials.create()
调用时触发。扩展程序必须通过调用 completeCreateRequest()
并使用 requestInfo
中的 requestId
来提供响应。
参数
- callback
函数
callback
参数如下所示:(requestInfo: CreateRequest) => void
- requestInfo
-
onGetRequest
chrome.webAuthenticationProxy.onGetRequest.addListener(
callback: function,
)
在发生 WebAuthn navigator.credentials.get() 调用时触发。扩展程序必须通过调用 completeGetRequest()
并使用 requestInfo
中的 requestId
来提供响应
参数
- callback
函数
callback
参数如下所示:(requestInfo: GetRequest) => void
- requestInfo
-
onIsUvpaaRequest
chrome.webAuthenticationProxy.onIsUvpaaRequest.addListener(
callback: function,
)
在发生 PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
调用时触发。扩展程序必须通过调用 completeIsUvpaaRequest()
并使用 requestInfo
中的 requestId
来提供响应
参数
- callback
函数
callback
参数如下所示:(requestInfo: IsUvpaaRequest) => void
- requestInfo
-
onRemoteSessionStateChange
chrome.webAuthenticationProxy.onRemoteSessionStateChange.addListener(
callback: function,
)
与此扩展程序关联的原生应用可以通过以下方式触发此事件:在默认用户数据目录内的名为 WebAuthenticationProxyRemoteSessionStateChange
的目录中写入名称等于扩展程序 ID 的文件
文件内容应为空。也就是说,无需更改文件内容即可触发此事件。
原生宿主应用可以使用此事件机制来指示可能发生的远程会话状态变化(即从分离到附加,或从附加到分离),而扩展程序服务工作线程可能处于暂停状态。在此事件的处理程序中,扩展程序可以相应地调用 attach()
或 detach()
API 方法。
事件监听器必须在加载时同步注册。
参数
- callback
函数
callback
参数如下所示:() => void
onRequestCanceled
chrome.webAuthenticationProxy.onRequestCanceled.addListener(
callback: function,
)
当 onCreateRequest
或 onGetRequest
事件被取消时(因为 WebAuthn 请求被调用方中止,或者因为超时)触发。当收到此事件时,扩展程序应取消在客户端上对相应请求的处理。扩展服务在请求取消后无法完成该请求。
参数
- callback
函数
callback
参数如下所示:(requestId: number) => void
- requestId
数值
-