Take a Test JavaScript API

参加测验是一款基于浏览器的应用,它为高风险测试呈现锁定的在线评估,使教师能够专注于评估内容,而不是如何提供安全的测试环境。 为此,它使用任何 Web 应用程序都可以利用的 JavaScript API。 Take-a-test API 支持 SBAC 浏览器 API 标准用于高风险常见核心测试。

有关应用本身的详细信息,请参阅 Take a Test 应用技术参考。 有关故障排除帮助,请参阅使用事件查看器对 Microsoft Take a Test 进行故障排除

参考文档

Take a Test API 存在于以下命名空间中。 请注意,所有 API 都依赖于全局 SecureBrowser 对象。

命名空间 说明
安全命名空间 包含用于锁定设备以进行测试并强制实施测试环境的 API。

安全命名空间

安全命名空间使你可以锁定设备、检查用户和系统进程列表、获取 MAC 和 IP 地址以及清除缓存的 Web 资源。

方法 说明
lockDown 锁定设备进行测试。
isEnvironmentSecure 确定锁定上下文是否仍应用于设备。
getDeviceInfo 获取有关运行测试应用程序的平台的详细信息。
examineProcessList 获取正在运行的用户和系统进程的列表。
close 关闭浏览器并解锁设备。
getPermissiveMode 检查是否打开或关闭了宽松模式。
setPermissiveMode 打开或关闭宽松模式。
emptyClipBoard 清除系统剪贴板。
getMACAddress 获取设备的 MAC 地址列表。
getStartTime 获取测试应用启动的时间。
getCapability 查询功能是启用还是禁用。
setCapability 启用或禁用指定的功能。
isRemoteSession 检查当前会话是否远程登录。
isVMSession 检查当前会话是否在虚拟机中运行。

lockDown

锁定设备。 还用于解锁设备。 测试 Web 应用程序将在允许学生开始测试之前调用此呼叫。 实施者需要采取任何必要的操作来保护测试环境。 保护环境的步骤是设备特定的,例如,包括禁用屏幕捕获、在安全模式下禁用语音聊天、清除系统剪贴板、进入展台模式、在 OSX 10.7+ 设备中禁用 Spaces 等方面。测试应用程序将在评估开始前启用锁定,在学生完成评估并退出安全测试时禁用锁定。

语法
void SecureBrowser.security.lockDown(Boolean enable, Function onSuccess, Function onError);

Parameters

  • enable - true 用于在锁屏界面上运行 Take-a-Test 应用,并应用此文档中讨论的策略。 false 停止在锁屏上方运行 Take-a-Test,并关闭它,除非应用未锁定;在未锁定时没有效果。
  • onSuccess - [可选] 要在已成功启用或禁用锁定后调用的函数。 它必须采用 Function(Boolean currentlockdownstate) 形式。
  • onError - [可选] 要在锁定操作失败时调用的函数。 它必须采用 Function(Boolean currentlockdownstate) 形式。

要求
Windows 10 版本 1709 或更高版本


isEnvironmentSecure

确定锁定上下文是否仍应用于设备。 测试 Web 应用程序将在允许学生开始测试之前调用它,并在测试内定期进行测试。

语法
void SecureBrowser.security.isEnvironmentSecure(Function callback);

Parameters

  • callback - 要在此函数完成时调用的函数。 它必须采用 Function(String state) 形式,其中 state 是包含两个字段的 JSON 字符串。 第一个字段是 secure 字段,仅当所有必要锁定已启用(或功能已禁用)来启用安全测试环境,并且这些锁定自应用进入锁定模式以来未曾受到入侵时,才会显示 true。 另一个字段 messageKey 包含特定于供应商的其他详情或信息。 此处的意图是允许供应商放置增加布尔 secure 标志的其他信息:
{
    'secure' : "true/false",
    'messageKey' : "some message"
}

要求
Windows 10 版本 1709 或更高版本


getDeviceInfo

获取有关运行测试应用程序的平台的详细信息。 这用于扩充用户代理中可识别的任何信息。

语法
void SecureBrowser.security.getDeviceInfo(Function callback);

Parameters

  • callback - 要在此函数完成时调用的函数。 它必须采用 Function(String infoObj) 形式,其中 infoObj 是包含几个字段的 JSON 字符串。 必须支持以下字段:
    • os 表示操作系统类型(例如:Windows、macOS、Linux、iOS、Android 等。)
    • name 表示操作系统发布名称(如果有)(例如:Sierra、Ubuntu)。
    • version 表示操作系统版本(例如:10.1、10 专业版等。)
    • brand 表示安全的浏览器品牌(例如:OAKS、CA、SmarterApp 等。)
    • model 表示仅适用于移动设备的设备模型;对于桌面浏览器则为 null/unused。

要求
Windows 10 版本 1709 或更高版本


examineProcessList

获取用户拥有的客户端计算机上运行的所有进程的列表。 测试应用程序将调用它来检查列表,并将其与测试周期期间被视为拒绝列出的进程列表进行比较。 应在评估开始时调用此呼叫,并在学生接受评估时定期调用此呼叫。 如果检测到拒绝列出的进程,应停止评估以保持测试完整性。

语法
void SecureBrowser.security.examineProcessList(String[] denylistedProcessList, Function callback);

Parameters

  • denylistedProcessList - 测试应用程序已列入拒绝列表的进程列表。
    callback - 要在找到活动进程后调用的函数。 它必须采用以下形式:Function(String foundDenylistedProcesses),其中 foundDenylistedProcesses 的形式为:"['process1.exe','process2.exe','processEtc.exe']"。 如果未找到任何列入拒绝列表的进程,则为空。 如果为 null,则表示原始函数调用中发生了错误。

备注 该列表不包括系统进程。

要求
Windows 10 版本 1709 或更高版本


close

关闭浏览器并解锁设备。 当用户选择退出浏览器时,测试应用程序应调用此呼叫。

语法
void SecureBrowser.security.close(restart);

Parameters

  • restart - 此参数将被忽略,但必须提供。

备注 在 Windows 10 版本 1607 中,设备最初必须锁定。 在更高版本中,无论设备是否已锁定,此方法都会关闭浏览器。

要求
Windows 10 版本 1709 或更高版本


getPermissiveMode

测试 Web 应用程序应调用它以确定宽松模式是打开还是关闭。 在宽松模式下,浏览器预计将放宽其一些严格的安全挂钩,以允许辅助技术与安全浏览器配合使用。 例如,在宽松模式下,主动阻止其他应用程序 UI 呈现的浏览器可能想要放宽这一点。

语法
void SecureBrowser.security.getPermissiveMode(Function callback)

Parameters

  • callback - 在此调用完成时要调用的函数。 它必须采用以下形式:Function(Boolean permissiveMode),其中 permissiveMode 表示浏览器当前是否处于宽松模式。 如果它未定义或为 null,则获取操作中会发生错误。

要求
Windows 10 版本 1709 或更高版本


setPermissiveMode

测试 Web 应用程序应调用此项以打开或关闭宽松模式。 在宽松模式下,浏览器预计将放宽其一些严格的安全挂钩,以允许辅助技术与安全浏览器配合使用。 例如,在宽松模式下,主动阻止其他应用程序 UI 呈现的浏览器可能想要放宽这一点。

语法
void SecureBrowser.security.setPermissiveMode(Boolean enable, Function callback)

Parameters

  • enable - 指示预期许可模式状态的布尔值。
  • callback - 在此调用完成时要调用的函数。 它必须采用以下形式:Function(Boolean permissiveMode),其中 permissiveMode 表示浏览器当前是否处于宽松模式。 如果它未定义或为 null,则设置操作中会发生错误。

要求
Windows 10 版本 1709 或更高版本


emptyClipBoard

清除系统剪贴板。 测试应用程序应调用此项以强制清除可能存储在系统剪贴板中的任何数据。 lockDown 函数也执行此操作。

语法
void SecureBrowser.security.emptyClipBoard();

要求
Windows 10 版本 1709 或更高版本


getMACAddress

获取设备的 MAC 地址列表。 测试应用程序应调用此功能来帮助进行诊断。

语法
void SecureBrowser.security.getMACAddress(Function callback);

Parameters

  • callback - 在此调用完成时要调用的函数。 它必须采用以下形式:Function(String addressArray),其中 addressArray 的形式为:"['00:11:22:33:44:55','etc']"

备注
很难依赖源 IP 地址来区分测试服务器中的最终用户计算机,因为学校通常使用防火墙/NAT/代理。 MAC 地址允许应用区分公共防火墙后面的最终客户端计算机,以实现诊断目的。

要求
Windows 10 版本 1709 或更高版本


getStartTime

获取测试应用启动的时间。

语法
DateTime SecureBrowser.security.getStartTime();

返回值
表示测试应用启动时间的 DateTime 对象。

要求
Windows 10 版本 1709 或更高版本


getCapability

查询功能是启用还是禁用。

语法
Object SecureBrowser.security.getCapability(String feature)

Parameters
feature - 用于确定要查询的功能的字符串。 有效的功能字符串为“screenMonitoring”、“printing”和“textSuggestions”(不区分大小写)。

返回值
此函数返回 JavaScript 对象或文本,形式为:{<feature>:true|false}。 如果启用了查询功能,则为 true;如果未启用该功能或功能字符串无效,则为 false

要求 Windows 10 版本 1703 或更高版本


setCapability

启用或禁用浏览器上的特定功能。

语法
void SecureBrowser.security.setCapability(String feature, String value, Function onSuccess, Function onError)

Parameters

  • feature - 用于确定要设置的功能的字符串。 有效的功能字符串为 "screenMonitoring""printing""textSuggestions"(不区分大小写)。
  • value - 该功能的预期设置。 它必须是 "true""false"
  • onSuccess - [可选] 要在 set 操作已成功完成后调用的函数。 它必须采用形式 Function(String jsonValue),其中 jsonValue 的形式为:{<feature>:true|false|undefined}
  • onError - [可选] 要在 set 操作失败时调用的函数。 它必须采用形式 Function(String jsonValue),其中 jsonValue 的形式为:{<feature>:true|false|undefined}

备注
如果目标功能对浏览器未知,此函数会将 undefined 的值传递给回调函数。

要求 Windows 10 版本 1703 或更高版本


isRemoteSession

检查当前会话是否远程登录。

语法
Boolean SecureBrowser.security.isRemoteSession();

返回值
如果当前会话为远程,则为 true,否则为 false

要求
Windows 10 版本 1709 或更高版本


isVMSession

检查当前会话是否在虚拟机中运行。

语法
Boolean SecureBrowser.security.isVMSession();

返回值
如果当前会话在虚拟机中运行,则为 true,否则为 false

备注
此 API 检查只能检测在某些实现相应 API 的虚拟机监控程序中运行的 VM 会话

要求
Windows 10 版本 1709 或更高版本