Take a Test はブラウザーベースの UWP アプリで、高リスクテスト用にロックダウンされたオンライン評価をレンダリングします。これにより、教師はセキュリティで保護されたテスト環境を提供する方法ではなく、評価コンテンツに集中できます。 これを実現するために、任意の Web アプリケーションが利用できる JavaScript API を使用します。 Take-a-test API では、SBAC ブラウザー API 標準 が高いステークを持つ共通コアテスト用にサポートされています。
アプリ自体の詳細については、「 テスト アプリの取得」テクニカル リファレンス を参照してください。 トラブルシューティングのヘルプについては、 イベント ビューアーを使用した Microsoft のテストのトラブルシューティングを参照してください。
参照ドキュメント
Take a Test API は、次の名前空間に存在します。 すべての API はグローバル SecureBrowser オブジェクトに依存します。
| Namespace | Description |
|---|---|
| セキュリティ名前空間 | テスト用にデバイスをロックダウンし、テスト環境を適用できる API が含まれています。 |
セキュリティ名前空間
セキュリティ名前空間を使用すると、デバイスのロックダウン、ユーザーとシステム プロセスの一覧の確認、MAC と IP アドレスの取得、キャッシュされた Web リソースのクリアを行うことができます。
| メソッド | Description |
|---|---|
| lockDown | テストのためにデバイスをロックダウンします。 |
| isEnvironmentSecure | ロックダウン コンテキストが引き続きデバイスに適用されるかどうかを判断します。 |
| getDeviceInfo | テスト アプリケーションが実行されているプラットフォームの詳細を取得します。 |
| examineProcessList | 実行中のユーザー プロセスとシステム プロセスの一覧を取得します。 |
| 閉じる | ブラウザーを閉じ、デバイスのロックを解除します。 |
| getPermissiveMode | 制限モードがオンまたはオフかどうかを確認します。 |
| setPermissiveMode | 制限モードのオンとオフを切り替えます。 |
| クリップボードを空にする | システム クリップボードをクリアします。 |
| getMACAddress | デバイスの MAC アドレスの一覧を取得します。 |
| getStartTime | テスト アプリが開始された時刻を取得します。 |
| getCapability | 機能が有効か無効かをクエリします。 |
| setCapability | 指定した機能を有効または無効にします。 |
| isRemoteSession | 現在のセッションがリモートでログインしているかどうかを確認します。 |
| isVMSession | 現在のセッションが仮想マシンで実行されているかどうかを確認します。 |
ロックダウン
デバイスをロックダウンします。 デバイスのロックを解除するためにも使用されます。 テスト Web アプリケーションは、学生がテストを開始できるようにする前に、この呼び出しを呼び出します。 実装者は、テスト環境をセキュリティで保護するために必要なアクションを実行する必要があります。 環境をセキュリティで保護するための手順はデバイス固有であり、たとえば、画面キャプチャの無効化、セキュア モードでのボイス チャットの無効化、システム クリップボードのクリア、キオスク モードへの移行、OSX 10.7 以降のデバイスでのスペースの無効化などの側面が含まれます。テスト アプリケーションは、評価が開始される前にロックダウンを有効にし、学生が評価を完了し、セキュリティで保護されたテストから外れたときにロックダウンを無効にします。
構文
void SecureBrowser.security.lockDown(Boolean enable, Function onSuccess, Function onError);
パラメーター
-
enable- true にすると、ロック画面の上で Take-a-Test アプリを実行し、Take-a-Test アプリのテクニカルリファレンスで説明されているポリシーを適用します。 false は 、ロック画面の上で Take-a-Test の実行を停止し、アプリがロックダウンされていない限り閉じます。その場合、影響はありません。 -
onSuccess- [省略可能] ロックダウンが正常に有効または無効になった後に呼び出す関数。Function(Boolean currentlockdownstate)形式である必要があります。 -
onError- [省略可能] ロックダウン操作が失敗した場合に呼び出す関数。Function(Boolean currentlockdownstate)形式である必要があります。
必要条件
Windows 10バージョン 1709 以降
環境が安全か
ロックダウン コンテキストが引き続きデバイスに適用されるかどうかを判断します。 テスト用ウェブアプリケーションは、学生がテストを開始する前と、テスト中の定期的なタイミングでこれを呼び出します。
構文
void SecureBrowser.security.isEnvironmentSecure(Function callback);
パラメーター
-
callback- この関数が完了したときに呼び出す関数。Function(String state)が 2 つのフィールドを含む JSON 文字列であるstate形式である必要があります。 1 つ目はsecureフィールドで、セキュリティで保護されたテスト環境を有効にするために必要なすべてのロックが有効になっている (または機能が無効になっている) 場合にのみtrueが表示され、アプリがロックダウン モードに入ってからこれらのいずれも侵害されていません。 もう 1 つのフィールドmessageKeyには、ベンダー固有のその他の詳細または情報が含まれます。 ここでの目的は、ベンダーがブール値のsecureフラグを拡張する追加情報を配置できるようにすることです。
{
'secure' : "true/false",
'messageKey' : "some message"
}
必要条件
Windows 10バージョン 1709 以降
getDeviceInfo(デバイス情報取得)
テスト アプリケーションが実行されているプラットフォームの詳細を取得します。 これは、ユーザー エージェントから識別可能な情報を拡張するために使用されます。
構文
void SecureBrowser.security.getDeviceInfo(Function callback);
パラメーター
-
callback- この関数が完了したときに呼び出す関数。Function(String infoObj)が複数のフィールドを含む JSON 文字列であるinfoObj形式である必要があります。 次のフィールドがサポートされている必要があります。-
osは OS の種類 (Windows、macOS、Linux、iOS、Android など) を表します。 -
nameは OS リリース名 (存在する場合) を表します (例: Sierra、Ubuntu)。 -
versionは OS バージョンを表します (例: 10.1、10 Pro など) -
brandは、セキュリティで保護されたブラウザーのブランド (OAKS、CA、SmarterApp など) を表します。 -
modelはモバイル デバイスのみのデバイス モデルを表します。デスクトップ ブラウザーでは null/未使用。
-
必要条件
Windows 10バージョン 1709 以降
プロセスリストを検査する
ユーザーが所有するクライアント コンピューターで実行されているすべてのプロセスの一覧を取得します。 テスト アプリケーションはこれを呼び出して一覧を調べ、テスト サイクル中に拒否リストと見なされたプロセスの一覧と比較します。 この呼び出しは、評価の開始時と、学生が評価を受けている間に定期的に呼び出す必要があります。 拒否リストのプロセスが検出された場合は、テストの整合性を維持するために評価を停止する必要があります。
構文
void SecureBrowser.security.examineProcessList(String[] denylistedProcessList, Function callback);
パラメーター
-
denylistedProcessList- テスト アプリケーションが拒否するプロセスの一覧。
callback- アクティブなプロセスが見つかった後に呼び出す関数。Function(String foundDenylistedProcesses)は"['process1.exe','process2.exe','processEtc.exe']"の形式であるfoundDenylistedProcessesの形式である必要があります。 拒否リストのプロセスが見つからなかった場合は空になります。 null の場合は、元の関数呼び出しでエラーが発生したことを示します。
備考 この一覧には、システム プロセスは含まれません。
必要条件
Windows 10バージョン 1709 以降
閉じる
ブラウザーを閉じ、デバイスのロックを解除します。 テスト アプリケーションは、ユーザーがブラウザーを終了することを選択したときにこれを呼び出す必要があります。
構文
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 の場合、get 操作でエラーが発生しました。
必要条件
Windows 10バージョン 1709 以降
setPermissiveMode
テスト Web アプリケーションはこれを呼び出して、制限モードのオンとオフを切り替える必要があります。 制限のないモードでは、ブラウザーは、セキュリティで保護されたブラウザーで支援技術を使用できるように、厳格なセキュリティ フックの一部を緩和することが期待されます。 たとえば、他のアプリケーション UI がそれらの上に表示されるのを積極的に防ぐブラウザーは、制限のないモードの場合にこれを緩和したい場合があります。
構文
void SecureBrowser.security.setPermissiveMode(Boolean enable, Function callback)
パラメーター
-
enable- 目的の制限モードの状態を示すブール値。 -
callback- この呼び出しが完了したときに呼び出す関数。 ブラウザーが現在制限モードであるかどうかを示Function(Boolean permissiveMode)permissiveMode形式である必要があります。 未定義または null の場合、set 操作でエラーが発生しました。
必要条件
Windows 10バージョン 1709 以降
クリップボードを空にする
システム クリップボードをクリアします。 テスト アプリケーションはこれを呼び出して、システム クリップボードに格納できるデータを強制的にクリアする必要があります。 lockDown 関数もこの操作を実行します。
構文
void SecureBrowser.security.emptyClipBoard();
必要条件
Windows 10バージョン 1709 以降
MACアドレス取得
デバイスの MAC アドレスの一覧を取得します。 テスト アプリケーションは、診断を支援するためにこれを呼び出す必要があります。
構文
void SecureBrowser.security.getMACAddress(Function callback);
パラメーター
-
callback- この呼び出しが完了したときに呼び出す関数。Function(String addressArray)は"['00:11:22:33:44:55','etc']"の形式であるaddressArrayの形式である必要があります。
注釈
ファイアウォール/NAT/プロキシは学校で一般的に使用されているため、ソース IP アドレスに依存してテスト サーバー内のエンド ユーザー マシンを区別することは困難です。 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- [省略可能] set 操作が正常に完了した後に呼び出す関数。Function(String jsonValue)が の形式である{<feature>:true|false|undefined}形式である必要があります。 -
onError- [省略可能] set 操作が失敗した場合に呼び出す関数。Function(String 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 以降