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
物件。
命名空間 | 描述 |
---|---|
安全性命名空間 | 包含可讓您鎖定裝置以進行測試並強制執行測試環境的 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 或更新版本