Take a Test JavaScript API

Take a Test 是以瀏覽器為基礎的 UWP 應用程式,可轉譯鎖定的線上評估以進行高風險測試,讓授課者專注於評估內容,而不是如何提供安全的測試環境。 為了達成此目的,它會使用任何 Web 應用程式可以使用的 JavaScript API。 Take-a-test API 支援 SBAC 瀏覽器 API 標準,以進行利害關係常見的核心測試。

有關應用程式本身的更多資訊,請參閱 Take a Test 應用程式技術參考。 如需疑難解答說明,請參閱使用事件檢視器對 Microsoft Take a Test 進行疑難解答

參考文件

Take a Test API 存在於下列命名空間中。 請注意,所有 API 都依賴全域 SecureBrowser 物件。

Namespace 描述
安全性命名空間 包含可讓您鎖定裝置以進行測試並強制執行測試環境的 API。

安全性命名空間

安全性命名空間可讓您鎖定裝置、檢查使用者和系統程序清單、取得 MAC 和 IP 位址,以及清除快取的 Web 資源。

方法 描述
lockDown 鎖定裝置進行測試。
isEnvironmentSecure 判斷鎖定內容是否仍套用至裝置。
getDeviceInfo 取得測試應用程式執行所在的平排詳細資料。
examineProcessList 取得執行中使用者和系統程序的清單。
close 關閉瀏覽器並解除鎖定裝置。
getPermissiveMode 檢查寬容模式是否開啟或關閉。
setPermissiveMode 開啟或關閉寬容模式。
emptyClipBoard 清除系統剪貼簿。
getMACAddress 取得裝置的 MAC 位址清單。
getStartTime 取得測試應用程式啟動的時間。
getCapability 查詢是否啟用或停用功能。
setCapability 啟用或停用指定的功能。
isRemoteSession 檢查目前的工作階段是否已從遠端登入。
isVMSession 檢查目前工作階段是否在虛擬機器中執行。

lockDown

鎖定裝置。 也用來解除鎖定裝置。 測試 Web 應用程式會在允許學生開始測試之前叫用此呼叫。 實作者必須採取任何必要動作來保護測試環境。 保護環境所採取的步驟是特定於裝置的,例如,包括停用螢幕擷取、在安全模式下停用語音聊天、清除系統剪貼簿、進入資訊亭模式、停用 OSX 10.7+ 裝置中的空間等方面。測試應用程式將在評估開始之前啟用鎖定,並在學生完成評估並退出安全性測試時停用鎖定。

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

參數

  • 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);

參數

  • 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);

參數

  • callback - 當此函式完成時要呼叫的函式。 它必須是形式 Function(String infoObj),其中 infoObj是包含數個欄位的 JSON 字串。 必須支援下列欄位:
    • os 表示 OS 類型 (例如:Windows、macOS、Linux、iOS、Android 等)
    • name 表示 OS 版本名稱,如果有的話 (例如:Sierra、Ubuntu)。
    • version 表示 OS 版本 (例如:10.1、10 專業版等)
    • brand 表示安全的瀏覽器商標 (例如:OAKS、CA、SmarterApp 等)
    • model 僅表示行動裝置的裝置型號;桌面瀏覽器的 null/未使用。

需求
Windows 10 版本 1709 或更新版本


examineProcessList

取得使用者擁有之用戶端電腦上執行的所有程序清單。 測試應用程式會叫用此項目來檢查清單,並將其與測試週期期間視為拒絕列出的程序清單進行比較。 此呼叫應在評估開始時叫用,並在學生接受評估時定期叫用。 如果偵測到拒絕列出的程序,應該停止評估以保留測試完整性。

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

參數

  • denylistedProcessList - 測試應用程式已列出拒絕列出的程序清單。
    callback - 找到使用中程序之後要叫用的函式。 其形式必須是:Function(String foundDenylistedProcesses),其中 foundDenylistedProcesses 形式為:"['process1.exe','process2.exe','processEtc.exe']"。 如果找不到任何拒絕列出的程序,則會是空的。 如果為 Null,這表示原始函式呼叫中發生錯誤。

備註:清單不包含系統程序。

需求
Windows 10 版本 1709 或更新版本


close

關閉瀏覽器並解除鎖定裝置。 當使用者選擇結束瀏覽器時,測試應用程式應該叫用此函式。

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

參數

  • restart - 此參數會被忽略,但必須提供。

備註:在 Windows 10 版本 1607 中,裝置一開始必須鎖定。 在更新版本中,不論裝置是否已鎖定,此方法都會關閉瀏覽器。

需求
Windows 10 版本 1709 或更新版本


getPermissiveMode

測試 Web 應用程式應該叫用此函式,以判斷寬容模式是否開啟或關閉。 在寬容模式中,瀏覽器應該放寬其一些嚴格的安全性攔截,以允許輔助技術與安全瀏覽器搭配使用。 例如,當處於寬容模式時,主動防止其他應用程式 UI 呈現的瀏覽器可能會想要放寬此情況。

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

參數

  • callback - 此呼叫完成時要叫用的函式。 其形式必須為:Function(Boolean permissiveMode),其中 permissiveMode 指出瀏覽器目前是否處於寬容模式。 如果它未定義或 Null,則取得作業中發生錯誤。

需求
Windows 10 版本 1709 或更新版本


setPermissiveMode

測試 Web 應用程式應該叫用此函式,以開啟或關閉寬容模式。 在寬容模式中,瀏覽器應該放寬其一些嚴格的安全性攔截,以允許輔助技術與安全瀏覽器搭配使用。 例如,當處於寬容模式時,主動防止其他應用程式 UI 呈現的瀏覽器可能會想要放寬此情況。

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

參數

  • 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);

參數

  • callback - 此呼叫完成時要叫用的函式。 其形式必須是:Function(String addressArray),其中 addressArray 形式為:"['00:11:22:33:44:55','etc']"

備註
很難依賴來源 IP 位址來區分測試伺服器內的終端使用者電腦,因為防火牆/NAT/Proxy 通常會在學校使用。 MAC 位址可讓應用程式區分常見防火牆後方的終端用戶端電腦,以進行診斷。

需求
Windows 10 版本 1709 或更新版本


getStartTime

取得測試應用程式啟動的時間。

語法
DateTime SecureBrowser.security.getStartTime();

傳回
DateTime 物件能指出測試應用程式啟動的時間。

需求
Windows 10 版本 1709 或更新版本


getCapability

查詢是否啟用或停用功能。

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

參數
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)

參數

  • feature - 用來判斷要設定之功能的字串。 有效的功能字串為 "screenMonitoring""printing""textSuggestions" (不區分大小寫)。
  • value - 功能的預期設定。 它必須是 "true""false"
  • onSuccess - [選擇性] 在設定作業成功完成之後要呼叫的函式。 其形式必須是 Function(String jsonValue),其其中 jsonValue 的形式為 {<feature>:true|false|undefined}
  • onError - [選擇性] 如果設定作業失敗,要呼叫的函式。 其形式必須是 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 檢查只能偵測在特定 Hypervisor 中執行且實作適當 API 的 VM 工作階段

需求
Windows 10,版本 1709 或更新版本