共用方式為


Intune app SDK for iOS - Web 檢視功能

在應用程式內顯示 Web 內容

在 iOS 中,Web 檢視可以用來呈現各種不同的 Web 內容,而不需要離開應用程式的內容。 某些應用程式可能也會使用 Web 檢視作為跨多個平台共用功能和 UI 的方式。

因為 Web 檢視存在於應用程式內,所以會將它公開給潛在的數據外洩。 如果使用者能夠流覽至應用程式內的任意外部網頁, (透過刻意的應用程式設計,或是透過轉譯網頁的 html 內容) 中公開的鏈接進行擷取,則使用者可能能夠從應用程式洩漏受控數據。

Intune MAM SDK 提供數個 API 來處理不同的案例,其中 Managed 和 Unmanaged 內容會透過應用程式內的 Web 檢視呈現。 只有當有受控使用者登入應用程式時,才需要呼叫這些 API。 請參閱下表,以取得適用於哪一個案例的 API 快速指南。

案例 API
只有沒有任意網頁風險的用戶和組織內容 不需要 API
僅限非使用者和非組織內容 在中設定TreatAllWebViewsAsUnmanagedInfo.plist
使用者/組織和非使用者/非組織內容的混合 (多數非使用者/非組織) 在 中設定 TreatAllWebViewsAsUnmanagedInfo.plist並在包含使用者或組織資料的 Web 檢視上搭配 使用setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyCurrentIdentity
使用者/組織和非使用者/非組織內容的混合 (多數使用者/組織) 只在IntuneMAMWebViewPolicyUnmanaged不包含使用者或組織數據的 Web 檢視上搭配 使用setWebViewPolicy:forWebViewer:
用戶或組織內容,但有任意網頁的風險 遵循和的TreatAllWebViewsAsUnmanagedsetWebViewPolicy:forWebViewer:適當用法,也會針對可流覽至任意網頁的 Web 檢視實IntuneMAMWebViewPolicyDelegate作 。

Web 檢視案例 1:僅顯示使用者或組織內容的網頁

如果應用程式只使用 Web 檢視作為轉譯使用者或組織內容的方式,而且網頁檢視巡覽至任意外部網頁沒有風險,則不需要使用任何 API 或設定。 根據預設,SDK 會將應用程式內顯示的任何 Web 檢視視為屬於目前 UI 原則身分識別的內容。

如果受控使用者在應用程式內開啟 Web 檢視,則任何來自 Web 檢視的剪下/複製數據都會被視為受控內容。 貼入 Web 檢視會根據 Managed 帳戶的原則來處理。

如果 Unmanaged 使用者在應用程式內開啟 Web 檢視,則會將來自 Web 檢視的任何剪下/複製數據視為非受控內容。 貼入 Web 檢視會被視為由 Unmanaged 帳戶完成,而且不會強制執行其他限制。

Web 檢視案例 2:僅限未顯示使用者或組織內容的網頁

如果應用程式知道永遠不會在 Web 檢視中顯示使用者或組織內容,則可以在應用程式的 中將 設定為 TreatAllWebViewsAsUnmanagedYESInfo.plist 這會將網頁檢視中任何使用者完成的所有剪下、複製和貼上動作視為非受控。 不論用來執行動作之帳戶的管理狀態為何,動作都會被視為非受控用戶所執行。

這麼做可確保 Managed 應用程式內容不會透過 Web 檢視洩漏到應用程式外部。 如果應用程式只使用 Web 檢視來顯示隱私權注意事項、EULA 或其他不需要使用者檢視的靜態頁面內容,則設定此旗標會是不錯的主意。

設定時 TreatAllWebViewsAsUnmanaged ,Web 檢視內顯示的所有內容 都可以 複製並貼到其他非受控應用程式,因為 Web 檢視本身會被視為非受控。

Web 檢視案例 3:混合使用者/組織和非使用者/非組織內容

更複雜的應用程式可能會使用使用者/組織和非使用者/非組織 Web 檢視的組合。 應用程式可能會使用 Web 檢視來顯示隱私權注意事項,但也使用 Web 檢視來呈現用戶內容。 在此情況下, IntuneMAMPolicyManager可以使用的 setWebViewPolicy:forWebViewer: API。 此 API 可讓應用程式將個別 Web 檢視標示為 Unmanaged,或復原個別 Web 檢視的 TreatAllWebViewsAsUnmanaged 效果。

API 接受兩個自變數。 第一個值是 類型的列舉值 IntuneMAMWebViewPolicy 。 第二個可以是可能在其子檢視階層中包含 WKWebView 的 UIView 或 UIViewController。 WKWebView 本身也可以直接作為第二個自變數傳入。

如果 WKWebView 是傳入做為第二個自變數的 UIView 或 UIViewController 子系,則在呼叫此 API 時,它不一定存在於檢視階層中。 在 UIView 或 UIViewController 中傳遞的任何子系 WKWebViews 在新增時,都會套用適當的原則。

  • IntuneMAMWebViewPolicyUnset - 這是所有 WKWebViews 的默認原則。 Web 檢視只會 TreatAllWebViewsAsUnmanaged 根據旗標來處理。
  • IntuneMAMWebViewPolicyUnmanaged - 使用者在以此原則標記的 Web 檢視上執行的任何剪下/複製/貼上動作,都會被視為由 Unmanaged 身分識別執行。 此原則會覆寫 旗標 TreatAllWebViewsAsUnmanaged
  • IntuneMAMWebViewPolicyCurrentIdentity - 使用者在以此原則標記的 Web 檢視上執行的任何剪下/複製/貼上動作,都會被視為目前 UI 原則識別所執行的動作。 此原則會覆寫 旗標 TreatAllWebViewsAsUnmanaged

大部分的非使用者和非組織數據

如果應用程式內大部分的 Web 檢視都顯示 Unmanaged 內容,則TreatAllWebViewsAsUnmanaged可以在應用程式的 Info.plist 中設定 ,並setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyCurrentIdentity使用 在使用者或組織內容 Web 檢視上呼叫 。

多數用戶和組織數據

如果應用程式內大部分的 Web 檢視顯示使用者或組織內容,則只需要setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyUnmanaged在 Unmanaged Web 檢視上呼叫 ,因為所有 Web 檢視預設會被視為受管理。

Web 檢視案例 4:用戶或組織內容,但有任意網頁的風險

如果網頁檢視是用來顯示使用者或組織內容,但有流覽至任意外部 URL 的風險,則可以搭配 TreatAllWebViewsAsUnmanagedsetWebViewPolicy:forWebViewer:和 使用額外的 API。 例如,建議具有搜尋引擎直接或間接連結的功能或意見反應網頁。

IntuneMAMWebViewPolicyDelegate可以使用IntuneMAMPolicyManagersetWebViewPolicyDelegate:forWebViewer:的實作並設定為 Web 檢視。 IntuneMAMWebViewPolicyDelegate有一個必要方法。 isExternalURL:

方法 setWebViewPolicyDelegate:forWebViewer: 必須直接在 WKWebView 或 SFSafariViewController 上呼叫。

每次網頁檢視流覽至新頁面時, isExternalURL: 都會呼叫委派方法。 應用程式應該判斷傳遞至委派方法的 URL 是否代表可以貼入使用者或組織數據的內部網站,或是可能洩漏組織數據的外部網站。 傳回 NO 會告訴 SDK 正在載入的網站是可共用使用者或組織數據的組織位置。 如果目前的原則設定需要,傳回 YES 會造成 SDK 在受管理的瀏覽器中開啟 URL,而不是 WKWebView 或 SFSafariViewController。 這可確保應用程式內的任何使用者或組織數據都無法外泄至外部網站。

Web 檢視 API 範例

應用程式建置了五個 Web 檢視 (A、B、C、D 和 E) 。 Web 檢視 A、B 和 C 不會顯示使用者或組織數據。 Web 檢視 D 會顯示可供公司所有使用者使用的組織頁面。 Web 檢視 E 會轉譯可能包含連結的用戶檔。

由於大部分的 Web 檢視都是非受控 (A、B 和 C) ,因此我們可以將 設定 TreatAllWebViewsAsUnmanaged 為減少呼叫 setWebViewPolicy:forWebViewer:所需的次數。

由於 Web 檢視 D 和 E 會顯示使用者內容,且所有 Web 檢視現在預設為非受控,因此我們必須使用IntuneMAMWebViewPolicyCurrentIdentity標記它們setWebViewPolicy:forWebViewer:

因為 Web 檢視 E 包含使用者可能會按兩下的連結,而且可用來巡覽至任意 URL,所以我們也需要 IntuneMAMWebViewPolicyDelegate 實作 ,並使用 setWebViewPolicyDelegate:forWebViewer:將它設定為 Web 檢視 E。 在我們的 isExternalURL: 實作中,我們可以檢查連入URL,並查看它們是否與檔的URL相同。 如果它們不相符,則我們知道它是外部 URL,而且可以傳回 YES。 如果它們相符,則我們知道它是內部 URL,而且可以傳回 NO

實作和呼叫這些 API 表示受控使用者或組織內容無法洩漏至 Web 檢視 A、B 和 C。這也表示受控內容無法透過單擊檔內的連結,洩漏至使用者可能在 E 中流覽的任何外部 URL。 受控內容也會受到保護,方法是防止來自 Web 檢視 D 和 E 的數據洩漏到應用程式外部。

SwiftUI 支援

新建立的 SwiftUI 應用程式支援 UIScenes,但預設不會實作 UISceneDelegate。 如果您的應用程式想要支援UIScenes並使用 Intune App SDK,則必須實作UISceneDelegate。 如果不想支援 UIScenes, UIApplicationSceneManifest 則必須移除應用程式 Info.plist 中的 (也稱為「應用程式場景指令清單 ) 設定。