Android 版 Microsoft Intune App SDK 允許你將Intune 應用程式保護政策 (也稱為 MAM 政策) 整合到原生的 Java/Kotlin Android 應用程式中。 由 Intune 管理的應用程式會與 Intune 應用程式 SDK 整合。 當 Intune 主動管理應用程式時,Intune 管理員可以輕鬆部署應用程式保護政策到您的 Intune 管理應用程式。
注意事項
本指南分為數個不同階段。 先從《 規劃整合》開始。
第七階段:應用程式參與功能
賽段目標
- 了解 Intune App SDK 所提供的應用程式參與功能。
- 整合與你的應用程式及使用者相關的應用程式參與功能。
- 測試這些特性的整合。
什麼是「應用程式參與功能」?
此 SDK 整合流程試圖減少開發者需撰寫的應用程式專屬程式碼量。 成功完成 SDK 整合的前幾個階段後,你的應用程式現在會強制執行大部分的應用程式保護政策設定,例如檔案加密、複製/貼上限制、截圖阻擋及資料傳輸限制。
然而,有些設定需要應用程式專屬程式碼才能正確執行;這些設定稱為應用程式參與功能。 通常,SDK 沒有足夠的上下文來自動執行這些設定,因此依賴開發者適當地呼叫 SDK API。
應用程式參與功能不一定是可有可無的。 根據你應用程式現有的功能,這些功能可能是必需的。 詳情請參閱 SDK 整合的關鍵決策 。
本指南之前階段已經描述了幾項應用程式參與功能:
- 多重身份,如 第五階段:多重身份所涵蓋。
- 應用程式組態,詳見第六階段:應用程式組態。
本指南其餘部分將介紹剩餘的應用程式參與功能:
- 執行政策限制儲存檔案或開啟本地或雲端儲存。
- 執行限制通知內容的政策。
- 執行保護備份資料的政策。
- 如果你的應用程式有自訂的螢幕擷取程式碼) ,請強制執行限制螢幕擷取的政策 (。
- 支援應用程式保護CA。
- 請註冊以接收來自 SDK 的通知。
- 套用自訂應用程式主題。
- 使用Intune的可信憑證,確保與本地端點的信任鏈條。
應用程式參與功能基礎
AppPolicy 介面包含許多方法,可以告知你的應用程式是否允許某些動作。
大多數應用程式參與功能包含:
- 找出應用程式程式碼中正確的位置,以檢查某個動作是否被允許。
- 呼叫一個
AppPolicy方法來檢查某個動作是否被允許,根據目前設定的政策。 - 根據結果,可能是讓動作完成,或是在動作被阻擋時修改應用程式的行為。
要取得實例, AppPolicy 請使用 MAMPolicyManager 的方法之一,例如 getPolicy(final Context context) 或 getPolicyForIdentityOID(final String oid)。
AppPolicy 中的資訊方法
並非所有方法 AppPolicy 都綁定到應用程式參與功能。
有些方法是資訊性,會讓你的應用程式知道哪些政策目前已設定,即使這些政策是 SDK 自動執行的。
這些方法的存在,是為了讓你的應用程式有機會在設定特定政策時呈現客製化使用者體驗。
範例:判斷截圖是否被封鎖
如果應用程式有控制功能允許使用者截圖,考慮關閉或隱藏該控制功能,若應用程式保護政策會阻擋截圖。
應用程式可以透過打電話 MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed()查詢。
限制應用程式與裝置或雲端儲存地點間資料傳輸的政策
許多應用程式允許終端使用者將資料儲存至本地檔案儲存或雲端儲存服務中開啟資料。 Intune App SDK 讓 IT 管理員透過限制應用程式可儲存資料及開啟資料的地點,來防止資料流入與資料外洩。
注意事項
如果您的應用程式允許直接從應用程式儲存到個人或雲端位置,或允許直接在應用程式中開啟資料,您必須實作 Intune App SDK 應用程式參與功能**,讓 IT 管理員能阻擋此儲存與開啟。
儲存到裝置或雲端儲存
API getIsSaveToLocationAllowedForOID 會根據設定的政策,讓應用程式知道是否允許儲存到特定地點:
MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowedForOID(
SaveLocation service, String oid);
要判斷應用程式是否應實作檢查, getIsSaveToLocationAllowedForOID 請參考以下表格判斷應用程式是否支援資料出口:
service 參數: SaveLocation 枚舉值 |
使用情境 | 相關 OID |
|---|---|---|
ONEDRIVE |
這個應用程式正在將資料儲存到 OneDrive。 | 一個同時用於雲端服務認證和 Microsoft Entra 認證的帳號的 OID。 如果這個帳號不存在或 OID 未知,請使用 null。 |
SHAREPOINT |
這個應用程式正在將資料儲存到 SharePoint。 | 一個同時用於雲端服務認證和 Microsoft Entra 認證的帳號的 OID。 如果這個帳號不存在或 OID 未知,請使用 null。 |
BOX |
這個應用程式正在將資料儲存到 Box。 | 一個同時用於雲端服務認證和 Microsoft Entra 認證的帳號的 OID。 如果這個帳號不存在或 OID 未知,請使用 null。 |
LOCAL |
這個應用程式會把資料儲存到 裝置 上的外部儲存位置,而不是應用程式的私人儲存。 | 這個儲存位置不被視為雲端服務,應該始終搭配 null OID 參數使用。 |
PHOTO_LIBRARY |
該應用程式正在將資料儲存到 Android 本地的照片儲存空間。 | 本地照片儲存不被視為雲端服務,應該始終搭配 null OID 參數使用。 |
IMANAGE |
這個應用程式正在將資料儲存到 iManage。 | 一個同時用於雲端服務認證和 Microsoft Entra 認證的帳號的 OID。 如果這個帳號不存在或 OID 未知,請使用 null。 |
EGNYTE |
這個應用程式正在將資料儲存到 Egnyte。 | 一個同時用於雲端服務認證和 Microsoft Entra 認證的帳號的 OID。 如果這個帳號不存在或 OID 未知,請使用 null。 |
ACCOUNT_DOCUMENT |
這個應用程式會將資料儲存到與應用程式內帳戶相關的位置,而不是這個表格中特定的雲端位置。 利用此位置判斷多身份應用程式中是否能在帳號間傳遞資料。 |
一個用於 Microsoft Entra 認證的帳號的 OID。 如果這個帳號不存在或 OID 未知,請使用 null。 |
OTHER |
應用程式正在將資料儲存到這個表格中未指定的位置,且不符合條件 ACCOUNT_DOCUMENT。 |
這個 oid 地點並未被評估,應該會被 null評估。 |
存放於私人應用程式儲存空間的檔案,無論是為應用程式運作所必需,或是暫時下載用於顯示,都是被允許的;不需要再查了 getIsSaveToLocationAllowedForOID。
請務必檢查SaveLocation.LOCAL
- 檔案儲存在私人應用程式儲存空間之外。
- 下載到私人應用程式儲存空間但對應用程式運作不必要的檔案 (,例如當使用者明確選擇下載到裝置時,) 。
注意事項
檢查儲存政策時, oid 應該是與被儲存雲端服務相關的帳號的 OID, (這個帳號不一定和被儲存文件的帳號相同) 。
從本地或雲端儲存位置開啟資料
API getIsOpenFromLocationAllowedForOID 會根據設定的政策,讓應用程式知道特定身份是否允許從特定地點開啟:
MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowedForOID(
OpenLocation location, String oid);
要判斷應用程式是否應實作檢查, getIsOpenFromLocationAllowedForOID 請參考以下表格判斷應用程式是否支援資料輸入:
location 參數: OpenLocation 枚舉值 |
使用情境 | 相關 OID |
|---|---|---|
ONEDRIVE_FOR_BUSINESS |
這個應用程式正在開啟 OneDrive 的資料。 | 一個同時用於雲端服務認證和 Microsoft Entra 認證的帳號的 OID。 如果這個帳號不存在或 OID 未知,請使用 null。 |
SHAREPOINT |
這個應用程式正在開啟 SharePoint 的資料。 | 一個同時用於雲端服務認證和 Microsoft Entra 認證的帳號的 OID。 如果這個帳號不存在或 OID 未知,請使用 null。 |
CAMERA |
應用程式正在開啟裝置相機的資料。 | 價值 null ,因為裝置相機不是雲端服務。 |
LOCAL |
這個應用程式是在開啟裝置上外部儲存位置的資料,而該位置 並非 應用程式的私人儲存。 | 雖然外部儲存不是雲端服務,但 oid 參數是預期的,因為它代表所有權。• 對於帶有身份標籤的檔案: oid 應為檔案擁有者的身份。• 對於沒有身份標籤的檔案: oid 應為 null。 |
PHOTO_LIBRARY |
該應用程式正在開啟 Android 本地照片儲存空間的資料。 | 本地照片儲存不被視為雲端服務,應該始終搭配 null OID 參數使用。 |
ACCOUNT_DOCUMENT |
應用程式開啟的資料來自應用程式內與某個帳戶相關的位置,且不是此表中特定的雲端位置。 利用此位置判斷多身份應用程式中是否能在帳號間傳遞資料。 |
一個用於 Microsoft Entra 認證的帳號的 OID。 如果這個帳號不存在或 OID 未知,請使用 null。 |
OTHER |
應用程式正在開啟一個未在此表中指定且不符合條件 ACCOUNT_DOCUMENT的地點的資料。 |
這個 oid 地點並未被評估,應該會被 null評估。 |
注意事項
當你查看開啟的政策時, oid 應該是與檔案或雲端服務相關的帳戶的 OID , (不 一定和開啟文件) 的帳號相同。
提示
為了方便起見,SDK 提供了 AppPolicy.isOpenFromLocalStorageAllowed 一種方法,可以為本地儲存中的檔案取 File 參數。
在政策執行上,此方法功能上與呼叫 AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid) 相同,但處理的是解析檔案擁有者 oid 與 File.
分享被封鎖的對話
SDK 提供一個對話框,當 MAM 政策阻擋資料傳輸動作時通知使用者。
每當 getIsSaveToLocationAllowedForOID API getIsOpenFromLocationAllowedForOID 呼叫導致儲存/開啟動作被阻擋時,對話框應該會顯示給使用者。
對話框會顯示通用訊息,當被駁回時會返回呼叫 Activity 。
要顯示對話框,請加入以下程式碼:
MAMUIHelper.showSharingBlockedDialog(currentActivity)
允許檔案分享
如果不允許儲存到公開儲存位置,你的應用程式仍應該允許使用者透過下載檔案到 應用程式私有儲存 ,然後用系統選擇器開啟。
限制通知內容的政策
對於單一身份應用程式,Intune App SDK 的預設行為會嘗試在應用程式保護政策限制通知時阻擋所有通知。
SDK 的預設行為是有限的。 SDK 無法自動尊重「封鎖組織資料」這個值,該值本意是只移除受管理內容。 對於多身份應用程式,SDK 無法判斷哪些通知包含受管理內容。
如果你的應用程式顯示通知,且是多重身份,或需要執行「封鎖組織資料」的值,必須先檢查與通知相關的帳號的通知限制政策,才能顯示通知。
要判斷該政策是否被執行,請撥打以下電話:
NotificationRestriction notificationRestriction =
MAMPolicyManager.getPolicyForIdentityOID(notificationIdentityOid).getNotificationRestriction();
回傳 NotificationRestriction 的列舉具有以下數值:
NotificationRestriction 列舉 |
預期應用程式行為 |
|---|---|
BLOCKED |
應用程式 不得 顯示與此政策相關的帳號任何通知。 對於單一身份應用程式,Intune App SDK 會自動阻擋所有通知,且不需要額外程式碼。 |
BLOCK_ORG_DATA |
應用程式必須顯示不包含組織資料的修改通知。 |
UNRESTRICTED |
應用程式應該會顯示所有通知。 |
如果您的應用程式無法正確調用 getNotificationRestriction,MAM SDK 會盡力自動限制僅 針對單一身份應用程式的通知。
在這種情況下, BLOCK_ORG_DATA 會被當成 BLOCKED 一樣,通知根本不會顯示。
為了更細緻的控制,請檢查 的 getNotificationRestriction 值並適當修改應用程式通知。
保護備份資料的政策
Intune App SDK 可以阻擋 Android 內建備份與還原功能的資料上傳。 欲了解更多關於 Android 備份與還原的資訊,請參閱 Android API 指南 及 Android S / 12 中新增的變更,內容為 「變更備份與還原」。
應用程式自動備份
從 Android M 開始,Android 提供 自動完整備份 到 Google 雲端硬碟,無論應用程式的目標 API 為何。
Intune 讓你能使用 Android 提供的所有自動備份功能,包括以 XML 定義自訂規則的能力,並附有專門的 Intune 整合指引以確保資料保護適用。
在應用程式清單中設定備份行為
預設情況下, android:allowBackup 設定為 true ,如 啟用與停用備份所示。
如果應用程式不需要完整的備份和還原功能,請設android:allowBackup為 false。
在這種情況下,無需進一步行動,企業資料會保留在應用程式中。
如果您的應用程式需要完整的備份與還原功能,請設android:allowBackup為 true,並執行以下步驟:
如果你的應用程式沒有使用自訂
BackupAgent備份,請使用預設的 MAMBackupAgent 來啟用符合 Intune 政策的自動完整備份。 請在應用程式清單中填寫以下內容:<application ... android:fullBackupOnly="true" android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent" ...> </application>選用。 如果你實作自訂
BackupAgent,必須使用 MAMBackupAgent 或 MAMBackupAgentHelper。 請參見以下章節。 考慮切換到 Intune 的 MAMDefaultBackupAgent,步驟一說明,它在 Android M 及更新版本提供簡便備份。當你決定應用程式應該接收哪種完整備份 (未過濾、過濾或無) 時,請將屬性
android:fullBackupContent設定為true、 ,false或應用程式中的 XML 資源。接著,你必須將 的
android:fullBackupContent值複製到 metadata 標籤,com.microsoft.intune.mam.FullBackupContent對於支援 API 31 新增的 XML 配置格式的應用程式,則複製到com.microsoft.intune.mam.DataExtractionRulesmetadata 標籤中。範例 1:如果你想讓你的應用程式有完整備份且沒有排除,你必須將屬性和元資料標籤設 為 true:
<application ... android:fullBackupContent="true" ...> </application> ... <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="true" /> <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="true" />範例 2:如果你想讓你的應用程式使用自訂
BackupAgent且選擇退出完全符合 Intune 政策的自動備份,必須將屬性和元資料標籤設為 false:<application ... android:fullBackupContent="false" ...> </application> ... <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="false" /> <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="false" />範例 3:如果你想讓你的應用程式依照自訂規則的完整備份,請將屬性和元資料標籤設為相同的 XML 資源:
<application ... android:fullBackupContent="@xml/my_full_backup_content_scheme" android:dataExtractionRules="@xml/my_data_extraction_rules_scheme" ...> </application> ... <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:resource="@xml/my_full_backup_content_scheme" /> <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:resource="@xml/my_data_extraction_rules_scheme" />
鍵值備份
鍵值備份選項對所有 API 8+ 皆開放,並會將應用程式資料上傳至 Android 備份服務。 每個應用程式的資料容量限制在 5 MB。 如果你使用金鑰/值備份,必須使用 BackupAgentHelper 或 BackupAgent。
BackupAgentHelper
BackupAgentHelper 在原生 Android 功能和 Intune MAM 整合方面,比 BackupAgent 更容易實作。
BackupAgentHelper 允許開發者將整個檔案及共享偏好設定分別註冊到 a FileBackupHelper 和 SharedPreferencesBackupHelper () 然後在建立時加入 BackupAgentHelper。
請依照以下步驟使用搭配 Intune MAM 的 BackupAgentHelper:
要使用多
BackupAgentHelper重身份備份,請參考 Android 指南中的 Expandending BackupAgentHelper。讓你的班級擴展 MAM 版的 BackupAgentHelper、FileBackupHelper 和 SharedPreferencesBackupHelper。
| Android 類別 | MAM 等效物 |
|---|---|
BackupAgentHelper |
MAMBackupAgentHelper |
FileBackupHelper |
MAMFileBackupHelper |
SharedPreferencesBackupHelper |
MAMSharedPreferencesBackupHelper |
遵循這些指引,你就能成功執行多重身份備份與還原。
備份代理
BackupAgent 讓你能更明確地說明備份了哪些資料。 由於開發者負責實作,因此需要更多步驟以確保 Intune 提供適當的資料保護。 因為大部分工作都落在你這個開發者身上,Intune 的整合會稍微複雜一些。
整合MAM:
請仔細閱讀 Android 的 Key/Value Backup 指南,特別是 Expandending BackupAgent ,以確保你的 BackupAgent 實作符合 Android 指引。
請你的班級擴充 MAMBackupAgent。
多重身份備份:
在開始備份前,請確認你打算備份的檔案或資料緩衝區是否被 IT 管理員允許在多重身份情境下備份。 請使用
isBackupAllowedMAMFileProtectionManager 和 MAMDataProtectionManager 來判斷此行為。 如果檔案或資料緩衝區不允許備份,那你就不應該把它包含在備份裡。在備份過程中,如果你想備份第一步檢查的檔案身份,必須用你打算提取資料的檔案來呼叫
backupMAMFileIdentity(BackupDataOutput data, File … files)。 這個方法會自動建立新的備份實體,並幫你寫入。BackupDataOutput這些實體在恢復時會自動被消耗。
多重身份還原: 資料備份指南規範了一種通用的還原應用程式資料演算法,並在 擴充備份代理 程式章節提供程式碼範例。 要成功執行多重身份還原,您必須遵循本程式碼範例中提供的一般結構,特別注意以下幾點:
你必須使用
while(data.readNextHeader())* 迴圈來通過備份實體。如果
data.getKey()與你寫onBackup入的金鑰不符,你必須打電話data.skipEntityData()。 沒有這個步驟,你的還原可能無法成功。避免在 * 結構中使用備份實體
while(data.readNextHeader())時返回,因為我們自動寫入的任何實體在此情況下都會遺失。
- 其中
data是應用程式還原時接收的 MAMBackupDataInput 的本地變數名稱。
自訂螢幕擷取限制
如果您的應用程式包含繞過 Android Window層級 FLAG_SECURE 限制的自訂螢幕擷取功能,您必須先檢查螢幕擷取政策,才能完全存取該功能。
舉例來說,如果你的應用程式使用自訂渲染引擎將目前視圖渲染成 PNG 檔,你必須先檢查 AppPolicy.getIsScreenCaptureAllowed()。
注意事項
若應用程式不包含任何自訂或非 Microsoft 螢幕擷取功能,則無需採取任何行動來限制螢幕擷取。
所有 MAM 整合應用程式的螢幕擷取政策會在層級自動強制執行 Window 。
作業系統或其他應用程式嘗試在你的應用程式中擷取 A 的 Window 行為都會被按需要被阻擋。
例如,如果使用者試圖透過 Android 內建的截圖或螢幕錄影功能擷取你的應用程式螢幕,擷取會自動被限制,且應用程式無法參與。
支援應用程式保護CA
應用程式保護 CA (條件存取) ,也稱為基於應用程式的CA,限制對資源的存取。 Intune 應用程式保護政策必須先管理您的應用程式,才能存取這些資源。 Microsoft Entra ID 透過要求應用程式在授權憑證存取條件存取保護資源前,必須先註冊並由 Intune 應用程式保護政策管理,來執行此政策。
注意事項
應用程式保護CA支援需要Microsoft認證函式庫 (MSAL) 版本1.0.0或更新版本。
處理 MSAL 違規
當應用程式取得帳號的令牌時,MSAL 函式庫可能會回傳或拋出 , MsalIntuneAppProtectionPolicyRequiredException 以表示未遵守應用程式保護政策管理。
你可以從例外中提取更多參數用於合規修復, (參見 MAMComplianceManager) 。
修復成功後,應用程式可透過 MSAL 再次嘗試取得代幣。
MAMComplianceManager
當 MSAL 收到政策所需錯誤時,會使用 MAMComplianceManager 介面。
它包含了 [remediateCompliance] 方法,你可以呼叫它來嘗試讓應用程式進入合規狀態。
您可以透過以下方式取得參考資料 MAMComplianceManager :
MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);
// make use of mgr
MAMComplianceManager回傳的實例保證不會是 null。
package com.microsoft.intune.mam.policy;
public interface MAMComplianceManager {
void remediateCompliance(String upn, String aadId, String tenantId, String authority, boolean showUX);
}
此remediateCompliance()方法嘗試將應用程式置於管理之下,以滿足 Microsoft Entra ID 授予所請求代幣的條件。
前四個參數可從 MSAL AuthenticationCallback.onError() 方法接收的例外中擷取。
最後一個參數是一個布林值,用來控制使用者體驗在合規嘗試過程中是否會出現。
remediateCompliance 顯示一個簡單的阻擋進度對話框,讓應用程式在此操作中不必顯示自訂體驗。
此對話僅在合規修復進行中時顯示。 它不會顯示最終結果。
您的應用程式可以註冊一個接收者來接收 COMPLIANCE_STATUS 通知,以處理合規修復嘗試的成功或失敗。
詳情請參閱 合規狀態通知 。
remediateCompliance() 可能會啟動MAM登記,作為建立合規性的一部分。
如果應用程式已註冊註冊通知接收者,可能會收到註冊通知。
該應用程式的註冊 MAMServiceAuthenticationCallback 系統被 acquireToken() 呼叫來取得註冊的代幣。
acquireToken() 在應用程式取得自身代幣之前被呼叫。 應用程式在成功取得代幣後所做的簿記或帳戶建立工作,可能還沒完成。
此時回撥必須能取得代幣。
如果你無法從 退回代幣 acquireToken(),合規修復嘗試失敗。
如果你之後再呼叫,並以有效的令牌來呼叫 updateToken 所請求資源,合規修復會立即恢復。
注意事項
靜默憑證取得仍可 acquireToken() 行,因為使用者已被引導安裝代理並在異常發生前 MsalIntuneAppProtectionPolicyRequiredException 註冊裝置。
此過程使經紀人快取中有一個有效的刷新標記,讓經紀人能靜默取得請求的標記。
這裡有一個範例,該範例在方法中接收到政策所需的錯誤 AuthenticationCallback.onError() ,並呼叫 MAMComplianceManager 來處理該錯誤。
public void onError(@Nullable MsalException exc) {
if (exc instanceof MsalIntuneAppProtectionPolicyRequiredException) {
final MsalIntuneAppProtectionPolicyRequiredException policyRequiredException =
(MsalIntuneAppProtectionPolicyRequiredException) ex;
final String upn = policyRequiredException.getAccountUpn();
final String aadId = policyRequiredException.getAccountUserId();
final String tenantId = policyRequiredException.getTenantId();
final String authority = policyRequiredException.getAuthorityURL();
MAMComplianceManager complianceManager = MAMComponents.get(MAMComplianceManager.class);
complianceManager.remediateCompliance(upn, aadId, tenantId, authority, showUX);
}
}
合規狀態通知
如果應用程式註冊了類型 COMPLIANCE_STATUS為 的通知,系統會發送 a MAMComplianceNotification 以通知應用程式合規修復嘗試的最終狀態。
詳見 SDK 通知的註冊頁面。
public interface MAMComplianceNotification extends MAMUserNotification {
MAMCAComplianceStatus getComplianceStatus();
String getComplianceErrorTitle();
String getComplianceErrorMessage();
}
該 getComplianceStatus() 方法會從[MAMCAComplianceStatus]列舉中回傳合規修復嘗試的結果。
| 狀態碼 | 說明 |
|---|---|
UNKNOWN |
狀態不明。 這個狀態可能代表你有意外的失敗原因。 更多資訊可參考公司入口網站日誌。 |
COMPLIANT |
合規修復成功,應用程式現已符合政策規範。 MSAL 代幣的取得應該重新嘗試。 |
NOT_COMPLIANT |
試圖補救合規的努力失敗了。 該應用程式不合規,且在錯誤狀況修正前不應重試 MSAL 令牌取得。 其中包含 MAMComplianceNotification 額外的錯誤資訊。 |
SERVICE_FAILURE |
嘗試從 Intune 服務取得合規資料時發生了故障。 更多資訊可參考公司入口網站日誌。 |
NETWORK_FAILURE |
連接 Intune 服務時發生錯誤。 當網路連線恢復時,應用程式應重新嘗試其代幣獲取。 |
CLIENT_ERROR |
由於客戶端相關問題(例如缺少或使用者令牌錯誤)而未能修復合規。 這會 MAMComplianceNotification 包含更多錯誤資訊。 |
PENDING |
嘗試修復合規失敗,因為服務未在時間限制前發送狀態回應。 應用程式應該稍後會嘗試再次取得代幣。 |
COMPANY_PORTAL_REQUIRED |
必須在裝置上安裝公司入口網站,合規修復才會成功。 如果已經安裝,應用程式必須重新啟動。 對話框提示使用者重新啟動應用程式。 |
若合規狀態為 MAMCAComplianceStatus.COMPLIANT,應用程式應重新啟動其原始的代幣取得 (以) 自身資源。
若合規修復嘗試失敗, getComplianceErrorTitle() 與 getComplianceErrorMessage() 方法會回傳本地化字串,應用程式可選擇顯示給最終使用者。
這個應用程式無法解決大多數錯誤案例。 一般來說,帳號建立或登入失敗,讓使用者稍後再試。
如果故障持續存在,公司入口網站的日誌可能有助於判斷原因。 最終使用者可以提交日誌。 更多資訊請參閱 上傳與電子郵件紀錄。
以下是一個使用匿名類別註冊接收器以實作 MAMNotificationReceiver 介面的範例:
final MAMNotificationReceiverRegistry notificationRegistry = MAMComponents.get(MAMNotificationReceiverRegistry.class);
// create a receiver
final MAMNotificationReceiver receiver = new MAMNotificationReceiver() {
public boolean onReceive(MAMNotification notification) {
if (notification.getType() == MAMNotificationType.COMPLIANCE_STATUS) {
MAMComplianceNotification complianceNotification = (MAMComplianceNotification) notification;
// take appropriate action based on complianceNotification.getComplianceStatus()
// unregister this receiver if no longer needed
notificationRegistry.unregisterReceiver(this, MAMNotificationType.COMPLIANCE_STATUS);
}
return true;
}
};
// register the receiver
notificationRegistry.registerReceiver(receiver, MAMNotificationType.COMPLIANCE_STATUS);
注意事項
你必須在呼叫 remediateCompliance() 前註冊通知接收器,以避免出現可能導致錯過通知的競賽條件。
宣告支援應用程式保護CA
一旦你的應用程式準備好處理 App CA 修復,你可以告訴 Microsoft Identity 你的應用程式已經準備好 App CA。 要在 MSAL 應用程式中做到這點,請建立具有「protapp」客戶端功能的公開客戶端
{
"client_id" : "[YOUR_CLIENT_ID]",
"authorization_user_agent" : "DEFAULT",
"redirect_uri" : "[YOUR_REDIRECT_URI]",
"multiple_clouds_supported":true,
"broker_redirect_uri_registered": true,
"account_mode": "MULTIPLE",
"client_capabilities": "protapp",
"authorities" : [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount"
}
}
]
}
步驟完成後,請前往驗證應用程式保護CA。
實作說明
注意事項
應用程式的方法 MAMServiceAuthenticationCallback.acquireToken() 應該將 false 傳遞給 ,將 forceRefresh 旗標轉換為 acquireTokenSilentAsync()。
AcquireTokenSilentParameters acquireTokenSilentParameters =
builder.withScopes(Arrays.asList(scopes))
.forceRefresh(false)
.build();
acquireTokenSilentAsync(acquireTokenSilentParameters);
注意事項
如果你想在修復嘗試時顯示自訂的阻擋使用者體驗,你應該將 showUX 參數的 false 傳入 remediateCompliance()。
您必須先展示您的使用者體驗並註冊通知聆聽者,再撥打電話 remediateCompliance()。
這可避免競賽條件,若通知快速失敗, remediateCompliance() 可能會錯過通知。
例如, onCreate() Activity 子類別的 or onMAMCreate() 方法是註冊通知監聽器並呼叫 remediateCompliance()的理想位置。
這些 remediateCompliance() 參數可以作為意圖額外內容傳遞給你的使用者體驗。
當收到合規狀態通知時,您可以顯示結果或完成該活動。
注意事項
remediateCompliance() 註冊帳號並嘗試註冊。 一旦取得主代幣,就不必再叫,但打也 registerAccountForMAM() 沒壞處。
另一方面,若應用程式未能取得令牌並希望移除使用者帳號,必須呼叫 unregisterAccountForMAM() 移除帳號並防止背景重新註冊。
註冊以接收 SDK 的通知
Intune App SDK 指南討論了幾種可能需要你的應用程式註冊 SDK 通知的情況,例如:
- 多身份應用程式處理
WRONG_USER(請參見 受管理身份與非受管理身份) - 多身份應用程式處理
MANAGEMENT_REMOVED(請參見 資料緩衝保護) 。 - 多重身份應用程式處理
WIPE_USER_DATA或WIPE_USER_AUXILIARY_DATA(請參見 選擇性清除) 。 - 實作應用程式配置處理
REFRESH_APP_CONFIG的應用程式 (看到 從 SDK) 取用應用程式設定 。
本節說明 SDK 能發送的每一種通知類型、應用程式何時及為何需要接收該通知,以及如何實作通知接收器。
通知類型
所有 SDK 通知都實作 MAMNotification 介面,該介面僅有一個函式,回 getType()傳 MAMNotificationType 枚舉。
大多數通知是 MAMUserNotification 實例,提供特定於單一身份的資訊。 該恆等元的 OID 可透過 getUserOid() 函數取得,且可透過 getUserIdentity()取得恆等元的 UPN 。
MAMEnrollmentNotification 與 MAMComplianceNotification 進一步擴展 MAMUserNotification,分別包含嘗試將使用者或裝置註冊至 MAM 服務的結果,以及嘗試修復應用程式保護 CA 合規性的結果。
| 通知類型 | 通知類別 | 通知原因 | 適用性 | 操作技巧 | 討論串資訊 |
|---|---|---|---|---|---|
COMPLIANCE_STATUS |
MAMComplianceNotification |
回傳合規修復嘗試的結果。 | 實作 App Protection CA 的應用程式必須處理這部分。 | – | 非確定性 |
MAM_ENROLLMENT_RESULT |
MAMEnrollmentNotification |
回傳一次登記嘗試的結果。 | 所有應用程式都會收到這個。 | – | 非確定性 |
MANAGEMENT_REMOVED |
MAMUserNotification |
應用程式即將變得無法管理。 | 使用這些 MAMDataProtectionManager 的應用程式必須處理這些。 |
請見 MANAGEMENT_REMOVED。 | 從來沒有在 UI 討論串上 |
REFRESH_APP_CONFIG |
MAMUserNotification |
App 的設定值可能已經改變了。 | 實作應用程式設定與快取設定資料的應用程式必須處理此項。 | 應用程式必須失效並刷新任何快取的應用程式設定資料。 | 非確定性 |
REFRESH_POLICY |
MAMUserNotification |
應用程式防護政策可能已經改變。 | 有快取應用程式保護政策的應用程式必須處理這件事。 | 應用程式必須失效並更新快取的應用程式保護政策資料。 | 非確定性 |
WIPE_USER_DATA |
MAMUserNotification |
清除即將 (*) 。 | 使用應用程式 MAMDataProtectionManager 必須處理這 部分或WIPE_USER_AUXILIARY_DATA。 |
參見 選擇性清除。 | 從來沒有在 UI 討論串上 |
WIPE_USER_AUXILIARY_DATA |
MAMUserNotification |
清除即將 (*) 。 | 只有多重身份應用程式才會接收到這個功能。 使用應用程式 MAMDataProtectionManager 必須處理這 部分或WIPE_USER_DATA。 |
參見 選擇性清除。 | 從來沒有在 UI 討論串上 |
WIPE_COMPLETED |
MAMUserNotification |
清除已完成。 | 所有應用程式皆可選。 | 在 WIPE_USER_DATA 或 WIPE_USER_AUXILIARY_DATA之後交付。如果應用程式從清除處理器回報失敗,這則通知不會被傳送。 |
從來沒有在 UI 討論串上 |
(*) 抹除可能因多種原因發生,例如:
- 你的應用程式叫 做 unregisterAccountForMAM。
- 一位 IT 管理員發起了遠端清除。
- 管理員要求的條件存取政策並未被滿足。
警告
應用程式絕不應該同時註冊 WIPE_USER_DATA 通知 WIPE_USER_AUXILIARY_DATA 和通知。
MANAGEMENT_REMOVED
通知 MANAGEMENT_REMOVED 通知應用程式,原本由保單管理的帳戶即將變成無法管理的帳戶。
帳號解除管理後,應用程式將無法讀取該帳號的加密檔案、讀取已加密 MAMDataProtectionManager的資料、與加密剪貼簿互動,或以其他方式參與管理式應用程式生態系。
這不需要清除使用者資料或登出使用者 (如果需要清除, WIPE_USER_DATA 會) 發送通知。
許多應用程式可能不需要處理這類通知,但使用這 MAMDataProtectionManager 類通知的應用程式必須處理。
詳情請參見 資料緩衝保護 。
當 SDK 呼叫應用程式的接收器 MANAGEMENT_REMOVED 時,以下情況成立:
SDK 已經解密了先前加密的檔案 (但未解密屬於該應用程式的受保護資料緩衝區) 。 SD 卡中公開位置的檔案,如果不是直接屬於應用程式, (像是文件或下載資料夾) 都不會解密。
接收器方法建立的新檔案或受保護資料緩衝區 (,或接收器啟動後執行的其他程式碼) 都沒有加密。
應用程式仍能存取加密金鑰,因此像解密資料緩衝區這類操作都能成功。
當你的應用程式接收器回來後,它就無法再存取加密金鑰。
實作 MAMNotificationReceiver
要註冊 SDK 通知,您的應用程式必須建立一個 MAMNotificationReceiver ,並向 MAMNotificationReceiverRegistry 註冊。
要註冊接收器,請與你的接收者及你所用方式中想要的通知類型Application.onCreate通話registerReceiver:
@Override
public void onCreate() {
super.onCreate();
MAMComponents.get(MAMNotificationReceiverRegistry.class)
.registerReceiver(
new ToastNotificationReceiver(),
MAMNotificationType.WIPE_USER_DATA);
}
您的應用程式 MAMNotificationReceiver 實作必須包含該 onReceive(MAMNotification notification) 方法。
此方法對每次收到的通知個別調用,且必須回傳 boolean。
一般來說,這個方法應該都會回傳 true,除非你的應用程式在回應通知時遇到失敗。
與其他類型的 Android 接收器一樣,您的應用程式在處理通知方面具有彈性:
- 它可以為不同通知類型建立不同的 MAMNotificationReceiver 實作。 在這種情況下,務必分別註冊每個實作和每個通知類型。
- 它可以使用單一的 MAMNotificationReceiver 實作,該實作包含回應多種不同通知類型的邏輯。 在這種情況下,它必須為每種可回應的通知類型進行註冊。
- 它可以建立多個 MAMNotificationReceiver 實作,每個實作都回應相同的通知類型。 在這種情況下,兩者必須註冊到相同的通知類型。
提示
它封鎖是安全的 MAMNotificationReceiver.onReceive ,因為它的回調不會在 UI 執行緒上執行。
自訂主題
自訂主題可提供給 Intune 應用程式 SDK;此自訂主題適用於所有 SDK 螢幕與對話框。 如果沒有提供主題,則會使用預設的 SDK 主題。
提供自訂主題
要提供主題,請在方法 Application.onMAMCreate 中加入以下程式碼行:
MAMThemeManager.setAppTheme(R.style.AppTheme);
在範例中,替換 R.style.AppTheme 為 SDK 應該套用的樣式主題。
受信任根憑證管理
若應用程式需要由本地或私人憑證授權機構核發的 SSL/TLS 憑證,以提供對內部網站與應用程式的安全存取,Intune 應用程式開發套件已透過 API 類別 MAMTrustedRootCertsManager 與 MAMCertTrustWebViewClient 新增憑證信任管理支援。
注意事項
MAMCertTrustWebViewClient 支援 Android 10 或更新版本。
受信任根憑證管理提供以下支援:
- SSLContext
- SSLSocketFactory
- TrustManager
- WebView
需求
- 受信任根憑證管理需要 Microsoft Tunnel for Mobile Application Management 授權。 欲了解更多,請造訪: Microsoft Tunnel with Mobile Application Management。
- 設定 Intune 應用程式組態 政策,將受信任的根憑證傳送給 Android 上的業務應用和 Edge Microsoft。 參見:在未註冊 Microsoft Intune 的 Android 裝置上使用 Microsoft Tunnel VPN。
注意事項
受信任根憑證管理可獨立於 Microsoft 隧道 VPN 閘道使用,但您必須取得 Microsoft MAM 隧道的授權。
使用 Intune 的受信任根憑證建立信任錨點
受信任根憑證管理(Trusted Root Certificates Management)允許你的應用程式結合 Intune 的受信任根憑證與裝置上的憑證。
API 類別 MAMTrustedRootCertsManager 與 MAMCertTrustWebViewClient 會使用透過應用程式組態政策提供的 Intune 受信任根憑證作為備用選項,若裝置的受信任根憑證儲存區未包含建立安全連線的可信根憑證。 如此一來,應用程式就能同時使用裝置與 Intune 憑證,來驗證與可信來源的安全連線與通訊。
為了強化網路安全設定,應用程式可以使用網路安全設定的 XML 檔案。 受信任根憑證管理(Trusted Root Certificates Management)會透過驗證應用程式的網路安全配置 XML 是否具備以下任何功能來維護這項額外的安全性:
- 自訂信任錨點,包含額外的憑證憑證(如自簽憑證)。
- 限制受信任 CA 的領域專用規則。
- 針對特定網域的憑證設置 PIN 組。
注意事項
欲了解更多 Android 網路安全配置資訊,請參見 網路安全配置。
如果這些條件適用於正在檢查信任的網域,Trusted Root Certificates Management 會跳過該網域的自訂信任檢查,只讓平台的預設信任管理員來執行檢查。
類別 MAMTrustedRootCertsManager
此類別提供以下 API:
-
createSSLContextForOID(String oid, String protocol):建立SSLContext一個物件,使用受信任的根憑證來指定身份及指定的 SSL/TLS 協定。 此類別回傳SSLContext的物件已正確初始化,物件X509TrustManager使用裝置與 MAM 服務的受信任根憑證合併。 -
createSSLSocketFactoryForOID(String oid, String protocol):建立SSLSocketFactory一個物件,使用受信任的根憑證來指定身份及指定的 SSL/TLS 協定。 回傳SSLSocketFactory的物件是從同一SSLContext物件中參考的。 -
createX509TrustManagersForOID(String oid): 建立一個物件陣列X509TrustManager,使用裝置與 MAM 服務的受信任根憑證,以達成指定身份。
注意事項
oid參數預期是特定使用者的Microsoft Entra使用者 ID (OID) ,該使用者負責執行該應用程式。 如果使用者識別碼事先未知,你可以傳遞一個 null 值,MAM 會嘗試從呼叫這些 API 的執行緒或程序中找出正確的身份。 必須正確設定該身份,才能讓 MAM 發現該身份。 欲了解更多關於在程序或執行緒上設定主動身份的資訊,請參見 第五階段:多重身份。
注意事項
當未提供參數時 protocol ,平台會使用最高支援的 SSL/TLS 協定。
以下是使用此類別的一些範例。
使用 HttpsUrlConnection 的範例
// Create an SSL socket factory using supplying the optional parameters identity and protocol
SSLSocketFactory sslSocketFactory = MAMTrustedRootCertsManager.createSSLSocketFactoryForOID(oid, "TLSv1.3");
// Create a URL object for the desired endpoint
URL url = new URL("https://example.com");
// Open a connection using the URL object
HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();
// Set the SSL socket factory for the connection
httpsURLConnection.setSSLSocketFactory(sslSocketFactory);
// Perform any other configuration or operations on the connection as needed
...
使用 OkHttpClient 的範例
// Get the TrustManager instances for an identity from the SDK
TrustManager[] trustManagers = MAMTrustedRootCertsManager.createX509TrustManagersForOID(oid);
// Get SSLContext from the platform
SSLContext sslContext = SSLContext.getInstance("TLSv1.3");
// Initialize the SSLContext with the trust managers from the Intune App SDK
sslContext.init(null, trustManagers, null);
// Create an OkHttpClient.Builder object
OkHttpClient.Builder builder = new OkHttpClient.Builder();
// Set the SSLSocketFactory and the trust managers from the SDK
builder.sslSocketFactory(sslContext.socketFactory, trustManagers[0] as X509TrustManager).build();
// Build an OkHttpClient object from the builder
OkHttpClient okHttpClient = builder.build();
// Create a Request object for the desired endpoint
Request request = new Request.Builder().url("https://example.com").build();
// Execute the request using the OkHttpClient object and get a Response object
Response response = okHttpClient.newCall(request).execute();
// Perform any other operations on the response as needed
...
類別 MAMCertTrustWebViewClient
此類別提供 Android 類別 android.webkit.WebViewClient的自訂實作。 該類別提供了處理 SSL 錯誤 android.net.http.SslError.SSL_UNTRUSTED 的方法 WebView。
處理錯誤時,類別使用由 Intune 配置且 MAM 服務提供的受信任根憑證。 此方法會從產生 SSL 錯誤 WebView的目標 URL 來檢查主機的可信度。 如果自訂實作無法處理 SSL 錯誤,系統會呼叫繼承自超類別的預設行為。
使用這個類別時,先建立一個實例,然後呼叫 WebView.setWebViewClient(WebViewClient) 它註冊到實 WebView 例。
這裡有一個使用這個類別的例子。
使用 WebView 的範例
// Get the MAM implementation of WebViewClient from the Intune App SDK
MAMCertTrustWebViewClient mamCertTrustWebViewClient = new MAMCertTrustWebViewClient();
// Set the MAM WebViewClient from the SDK as the current handler on the instance of WebView
webView.setWebViewClient(mamCertTrustWebViewClient);
// Perform any other operations on WebView
...
退出標準
欲了解更多資訊,請參閱 「快速測試並政策變更 」以方便測試。
驗證儲存至及開啟限制
如果你沒有實作 限制應用程式與裝置或雲端儲存地點間資料傳輸的政策,請跳過這部分。
重新熟悉所有應用程式可以將資料儲存到雲端服務或本地資料,並從雲端服務或本地資料開啟資料的情境。
為了簡化起見,這些測試假設你的應用程式只支援從應用程式內單一地點儲存資料到和開啟 OneDrive。 不過,你必須驗證每一個組合:每個支援的儲存位置都與應用程式允許儲存資料的地點相符,以及每個支援的開放位置與應用程式允許開啟資料的每個位置相符。
測試時,請安裝您的應用程式及 Intune 公司入口網站;開始測試前請以受管理帳號登入。 亦:
- 管理帳戶的政策設定為:
- 「將組織資料傳送到其他應用程式」設定為「政策管理應用程式」。
- 「從其他應用程式接收資料」設定為「政策管理應用程式」。
| 案例 | 前提條件 | 步驟 |
|---|---|---|
| 存檔至,完全允許 | 「儲存組織資料副本」政策設定為 允許 | - 導航到應用程式中可將資料儲存到 OneDrive 的部分。 - 嘗試使用登入應用程式的同一管理帳號將文件儲存到 OneDrive。 - 確認存檔是否允許。 |
| 存檔至,免於豁免 | - 「儲存組織資料副本」政策,設定為 封鎖 - 「允許使用者將副本儲存至特定服務」政策僅設為 OneDrive |
- 導航到應用程式中可將資料儲存到 OneDrive 的部分。 - 嘗試使用登入應用程式的同一管理帳號將文件儲存到 OneDrive。 - 確認存檔是否允許。 - 如果你的應用程式允許,嘗試將檔案儲存到不同的雲端儲存位置並確認它是否被封鎖。 |
| 儲存到,已被封鎖 | 「儲存組織資料副本」政策設定為 封鎖 | - 導航到應用程式中可將資料儲存到 OneDrive 的部分。 - 嘗試使用登入應用程式的同一管理帳號將文件儲存到 OneDrive。 - 確認存檔已被封鎖。 - 如果你的應用程式允許,嘗試將檔案儲存到不同的雲端儲存位置並確認它是否被封鎖。 |
| 從完全允許的狀態開啟 | 「開放資料進入組織文件」政策設定為 允許 | - 導航到應用程式中可開啟 OneDrive 資料的部分。 - 嘗試使用登入應用程式儲存空間的同一管理帳號,從 OneDrive 開啟文件。 - 確認開放是否允許。 |
| 已開除,免於此 | - 「Open data into Org Documents」政策設 為封鎖 - 「允許使用者從特定服務開啟資料」政策設定為僅限 OneDrive |
- 導航到應用程式中可開啟 OneDrive 資料的部分。 - 嘗試使用登入應用程式儲存空間的同一管理帳號,從 OneDrive 開啟文件。 - 確認開放是否允許。 - 如果你的應用程式允許,試著從不同的雲端儲存地點開啟另一個檔案並確認是否被封鎖。 |
| 開啟,已封鎖 | 「Open data into Org 文件」政策設定為 封鎖 | - 導航到應用程式中可開啟 OneDrive 資料的部分。 - 嘗試使用登入應用程式儲存空間的同一管理帳號,從 OneDrive 開啟文件。 - 確認開口被封鎖。 - 如果你的應用程式允許,試著從不同的雲端儲存地點開啟另一個檔案並確認是否被封鎖。 |
驗證通知限制
如果你沒有實作 通知內內容限制政策,請跳過這部分。
就應用程式保護政策而言,您的應用程式可能會發送三種不同的通知:
- 通知中沒有任何帳號資料。
- 包含屬於受管理帳戶資料的通知。
- 包含屬於未管理帳戶資料的通知。
如果你的應用程式是單一身份,只有前兩個帳戶相關,因為如果唯一帳戶未受管理,則不會適用任何保護措施。
你可以透過設定不同政策值觸發三種通知來驗證通知限制。
測試時,請安裝您的應用程式及 Intune 公司入口網站;開始測試前請以受管理帳號登入。 如果你的應用程式是多重身份,也請用非管理帳號登入應用程式。
| 案例 | 前提條件 | 步驟 |
|---|---|---|
| 完整內容被封鎖 | 「組織資料通知」政策設定為 封鎖 | - 觸發你的應用程式發送通知,但沒有帳號資料。 - 確認通知沒有顯示任何內容。 - 觸發你的應用程式發送管理帳號資料通知。 - 確認通知沒有顯示任何內容。 - 觸發你的應用程式發送未管理帳戶資料通知。 - 確認通知沒有顯示任何內容。 |
| 部分內容被封鎖 | 「組織資料通知」政策設定為 封鎖組織資料 | - 觸發你的應用程式發送通知,但沒有帳號資料。 - 確認通知顯示完整內容。 - 觸發你的應用程式發送管理帳號資料通知。 - 確認通知,刪除受管理帳號的內容。 - 觸發你的應用程式發送未管理帳戶資料通知。 - 確認通知顯示完整內容。 |
| 沒有內容被封鎖 | 「組織資料通知」政策設定為 允許 | - 觸發你的應用程式發送通知,但沒有帳號資料。 - 確認通知顯示完整內容。 - 觸發你的應用程式發送管理帳號資料通知。 - 確認通知顯示完整內容。 - 觸發你的應用程式發送未管理帳戶資料通知。 - 確認通知顯示完整內容。 |
驗證資料備份與還原
如果你沒有實作 保護備份資料的政策,請跳過這部分。
重新熟悉應用程式為備份設定 (檔案和鍵值對) 的內容。 你應該確認還原只有預期內容。 還原中多餘的內容可能導致資料外洩。
進行這些測試時,請安裝您的應用程式及 Intune 公司入口網站;開始測試前請以受管理帳號登入。 如果你的應用程式是多重身份,也請用非管理帳號登入應用程式。
請依照 Android 官方的備份測試說明操作。 這些說明在自動備份和鍵值備份上有所不同,請務必嚴格遵守。
驗證自訂螢幕截圖是否符合政策
如果你沒有實作 自訂螢幕捕捉限制,請跳過這部分。
如果你的應用程式有繞過 Android 層級FLAG_SECURE的功能Window,請驗證該功能是否被應用程式保護政策的截圖限制所阻擋。
測試時,請安裝您的應用程式及 Intune 公司入口網站;開始測試前請以受管理帳號登入。
| 案例 | 前提條件 | 步驟 |
|---|---|---|
| 螢幕擷取被阻擋 | 「螢幕擷取與 Google 助理」政策設定為 封鎖 | - 前往應用程式中使用自訂 FLAG_SECURE 程式碼的部分。- 嘗試使用該功能。 - 確認該功能已被封鎖。 |
| 允許螢幕擷取 | 「螢幕擷取與 Google 助理」政策設定為 允許 | - 前往應用程式中使用自訂 FLAG_SECURE 程式碼的部分。- 嘗試使用該功能。 - 確認該功能是否被允許。 |
驗證應用程式保護CA
如果你沒有實作 支援應用程式保護CA,請跳過這部分。
除了建立並指派應用程式保護政策給你的應用程式和測試帳戶的典型驗證步驟外,你還必須為測試帳戶建立並指派應用程式保護條件存取政策。 詳情請參閱「使用 Intune 設定基於應用程式的條件存取政策」。
測試步驟:
- 在開始這個測試前,請先卸載 Microsoft Authenticator 和 Intune 公司入口網站。
- 安裝你的應用程式。
- 登入你的應用程式時,測試帳號同時針對應用程式保護政策和基於應用程式的 CA 政策。
- 確認你的應用程式是否會提示你安裝公司入口網站。
- 再次登入。
- 確認你的應用程式會提示你註冊裝置。 按照提示操作。 如果你的應用程式沒有在這裡要求註冊,請先確認你的測試裝置已移除其他支援 SDK 的應用程式、公司入口網站和 Authenticator。 如果還是沒有提示,就再回頭看實作說明。
- 註冊後確認你能存取所有應用程式資料。
驗證通知接收器
如果你還沒實作 SDK 註冊通知,請跳過這一段。
驗證步驟取決於你的應用程式註冊的通知類型。 對於所有類型的通知,請加入日誌,以確保接收器被正確調用。
MAM_ENROLLMENT_RESULT 可透過以應用程式保護政策針對的帳號登入應用程式來觸發。
你可以REFRESH_APP_CONFIG透過更新針對你的測試帳號的相應應用程式組態政策和應用程式保護政策,並等待 SDK 收到更新的政策來觸發 和 REFRESH_POLICY 。
提示
請參閱「 快速測試並變更政策 」以加快此流程。
你可以透過 Microsoft Intune 的選擇性清除來觸發 MANAGEMENT_REMOVED、 WIPE_USER_DATA、 WIPE_USER_AUXILIARY_DATAWIPE_COMPLETED 和通知。
驗證自訂主題
如果你還沒實作 自訂主題,請跳過這部分。
你可以透過檢查 SDK 對話框中的顏色來驗證自訂主題支援。 最簡單的對話框是 MAM PIN 畫面。
前提條件:
- 管理帳戶的政策設定為:
- 「存取 PIN 碼」設為「必要」。
- 安裝您的應用程式和 Intune 公司入口網站。
測試步驟:
- 啟動你的應用程式並用測試帳號登入。
- 確認 MAM PIN 畫面是否顯示,且主題依照你提供的自訂主題給 SDK。
後續步驟
如果你依照本指南操作並完成本文前述的所有退出標準,你的應用程式現在已完全整合 Intune App SDK,並能執行應用程式保護政策。 如果你跳過了之前的應用程式參與部分,第五階段:多身份與第六階段:應用程式組態,且不確定應用程式是否應支援這些功能,請重新檢視 SDK 整合的關鍵決策。
應用程式防護現在已成為你應用程式的核心情境。 在你持續開發應用程式時,請持續參考本指南及 附錄 。