iOS용 Intune App SDK - Web-View 기능

응용 프로그램 내에서 웹 콘텐츠 표시

iOS에서는 웹 보기를 사용하여 앱의 컨텍스트를 벗어나지 않고도 다양한 웹 콘텐츠를 표시할 수 있습니다. 일부 애플리케이션에서는 여러 플랫폼에서 기능과 UI를 공유하는 방법으로 웹 보기를 사용할 수도 있습니다.

웹 보기는 앱 내에 존재하기 때문에 잠재적인 데이터 누출에 노출됩니다. 사용자가 앱 내에서 임의의 외부 웹 페이지를 탐색할 수 있는 경우(의도적인 앱 디자인 또는 렌더링된 웹 페이지의 html 콘텐츠에 노출된 링크를 통한 영리한 조작을 통해) 사용자는 앱에서 관리되는 데이터를 유출할 수 있습니다.

Intune MAM SDK는 관리 콘텐츠와 관리되지 않는 콘텐츠가 모두 앱 내의 웹 보기를 통해 표시되는 다양한 시나리오를 처리하기 위한 여러 API를 제공합니다. 이러한 API는 관리되는 사용자가 앱에 로그인한 경우에만 호출해야 합니다. 어떤 API가 어떤 시나리오에 적용되는지에 대한 빠른 지침으로 아래 표를 참조하세요.

시나리오 API
임의 웹 페이지의 위험이 없는 사용자 및 조직 콘텐츠만 API 필요 없음
비 사용자 및 비 조직 콘텐츠만 포함 TreatAllWebViewsAsUnmanaged 설정하기Info.plist
사용자/조직 및 비사용자/비조직 콘텐츠의 혼합(대다수가 비사용자/비조직) TreatAllWebViewsAsUnmanaged Info.plist 사용자 또는 조직 데이터가 포함된 웹 보기에서 설정 및 사용 setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyCurrentIdentity
사용자/조직 및 비사용자/비조직 콘텐츠의 혼합(다수 사용자/조직) 사용자 또는 조직 데이터가 포함되지 않은 웹 보기에서만 사용 setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyUnmanaged
사용자 또는 조직 콘텐츠이지만 임의 웹 페이지의 위험이 있음 setWebViewPolicy:forWebViewer:의 적절한 사용 TreatAllWebViewsAsUnmanaged 에 따라 임의의 웹 페이지로 이동할 수 있는 웹 보기에 대해서도 IntuneMAMWebViewPolicyDelegate 구현합니다.

웹 보기 시나리오 1: 사용자 또는 조직의 콘텐츠를 표시하는 웹 페이지만 표시

앱이 사용자 또는 조직 콘텐츠를 렌더링하는 방법으로만 웹 보기를 사용하고 웹 보기가 임의의 외부 웹 페이지로 이동할 위험이 없는 경우 API 또는 설정을 사용할 필요가 없습니다. 기본적으로 SDK는 앱 내에 표시되는 모든 웹 보기를 현재 UI 정책 ID에 속하는 콘텐츠로 처리합니다.

관리되는 사용자가 앱 내에서 웹 보기를 열면 웹 보기의 모든 잘라내기/복사 데이터가 관리되는 콘텐츠로 처리됩니다. 웹 보기에 붙여넣기는 관리 계정의 정책에 따라 처리됩니다.

관리되지 않는 사용자가 앱 내에서 웹 보기를 여는 경우 웹 보기의 모든 잘라내기/복사 데이터는 관리되지 않는 콘텐츠로 처리됩니다. 웹 보기에 붙여넣기는 관리되지 않는 계정에서 수행한 것처럼 처리되며 추가 제한이 적용되지 않습니다.

웹 보기 시나리오 2: 사용자 또는 조직의 콘텐츠를 표시하지 않는 웹 페이지만

앱에서 웹 보기 TreatAllWebViewsAsUnmanagedYES 내에 사용자 또는 조직 콘텐츠를 절대 표시하지 않는다는 것을 알고 있는 경우 앱의 Info.plist. 이렇게 하면 웹 보기 내에서 사용자가 수행하는 모든 잘라내기, 복사 및 붙여넣기 작업이 관리되지 않는 것으로 처리됩니다. 작업을 수행하는 데 사용된 계정의 관리 상태에 관계없이 작업은 관리되지 않는 사용자가 수행한 것처럼 처리됩니다.

이렇게 하면 관리되는 앱 콘텐츠가 웹 보기를 통해 앱 외부로 누출되지 않습니다. 앱이 웹 보기만 사용하여 개인 정보 보호 알림, EULA 또는 사용자가 볼 필요가 없는 기타 정적 페이지 콘텐츠를 표시하는 경우 이 플래그를 설정하는 것이 좋습니다.

를 설정하면 TreatAllWebViewsAsUnmanaged 웹 보기 자체가 관리되지 않는 것으로 간주되므로 웹 보기 내에 표시되는 모든 콘텐츠를 복사하여 다른 관리되지 않는 앱에 붙여넣을 있습니다.

웹 보기 시나리오 3: 사용자/조직 및 비사용자/비조직 콘텐츠의 혼합

더 복잡한 앱은 사용자/조직 및 비사용자/비조직 웹 보기의 조합을 사용할 수 있습니다. 앱은 웹 보기를 사용하여 개인 정보 알림을 표시할 수 있지만 웹 보기를 사용하여 사용자 콘텐츠를 표시할 수도 있습니다. 이 경우 IntuneMAMPolicyManagersetWebViewPolicy:forWebViewer: API를 사용할 수 있습니다. 이 API를 사용하면 앱에서 개별 웹 보기를 관리되지 않는 것으로 표시하거나 개별 웹 보기에 대한 효과를 TreatAllWebViewsAsUnmanaged 실행 취소할 수 있습니다.

API는 두 개의 인수를 사용합니다. 첫 번째는 type의 IntuneMAMWebViewPolicy 열거형 값입니다. 두 번째는 자식 보기 계층 구조에 WKWebView를 포함할 수 있는 UIView 또는 UIViewController일 수 있습니다. WKWebView 자체를 두 번째 인수로 직접 전달할 수도 있습니다.

WKWebView가 두 번째 인수로 전달된 UIView 또는 UIViewController의 자식인 경우 이 API가 호출될 때 뷰 계층 내에 존재하지 않아도 됩니다. UIView 또는 UIViewController에 전달된 자식 WKWebView는 추가될 때 적절한 정책을 갖습니다.

  • IntuneMAMWebViewPolicyUnset - 모든 WKWebView의 기본 정책입니다. 웹 보기는 플래그에 따라서만 처리됩니다.TreatAllWebViewsAsUnmanaged
  • IntuneMAMWebViewPolicyUnmanaged - 이 정책으로 태그가 지정된 웹 보기에서 사용자가 수행한 잘라내기/복사/붙여넣기 작업은 관리되지 않는 ID에 의해 수행되는 것처럼 처리됩니다. 이 정책은 플래그를 덮어씁니다 TreatAllWebViewsAsUnmanaged .
  • IntuneMAMWebViewPolicyCurrentIdentity - 이 정책으로 태그가 지정된 웹 보기에서 사용자가 수행한 잘라내기/복사/붙여넣기 작업은 현재 UI 정책 ID에 의해 수행되는 것처럼 처리됩니다. 이 정책은 플래그를 덮어씁니다 TreatAllWebViewsAsUnmanaged .

대다수의 비사용자 및 비조직 데이터

앱 내 대부분의 웹 보기가 관리되지 않는 콘텐츠를 TreatAllWebViewsAsUnmanaged 표시하는 경우 앱에서 Info.plistsetWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyCurrentIdentity 설정할 수 있으며 사용자 또는 조직 콘텐츠 웹 보기에서 호출할 수 있습니다.

대다수 사용자 및 조직 데이터

앱 내 대부분의 웹 보기가 사용자 또는 조직 콘텐츠를 표시하는 경우 모든 웹 보기가 기본적으로 관리되는 것으로 처리되므로 관리되지 않는 웹 보기에서만 with를 setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyUnmanaged 호출해야 합니다.

웹 보기 시나리오 4: 사용자 또는 조직 콘텐츠이지만 임의의 웹 페이지의 위험이 있음

웹 보기를 사용하여 사용자 또는 조직의 콘텐츠를 표시하지만 임의의 외부 URL로 이동할 위험이 있는 경우 추가 API를 및 및 setWebViewPolicy:forWebViewer:함께 TreatAllWebViewsAsUnmanaged 사용할 수 있습니다. 예를 들어 검색 엔진에 대한 직접 또는 간접 링크가 있는 제안 기능 또는 피드백 웹 페이지가 있습니다.

IntuneMAMWebViewPolicyDelegatesetWebViewPolicyDelegate:forWebViewer:사용하여 IntuneMAMPolicyManager구현하고 웹 보기로 설정할 수 있습니다. 에는 IntuneMAMWebViewPolicyDelegate 하나의 필수 메서드가 isExternalURL:있습니다.

메서드는 setWebViewPolicyDelegate:forWebViewer: WKWebView 또는 SFSafariViewController에서 직접 호출해야 합니다.

웹 보기가 새 페이지 isExternalURL: 로 이동할 때마다 대리자 메서드가 호출됩니다. 애플리케이션은 대리자 메서드에 전달된 URL이 사용자 또는 조직 데이터를 붙여넣을 수 있는 내부 웹 사이트 또는 조직 데이터를 유출할 수 있는 외부 웹 사이트를 나타내는지 확인해야 합니다. 반환 NO 하면 로드되는 웹 사이트가 사용자 또는 조직 데이터를 공유할 수 있는 조직 위치임을 SDK에 알립니다. 반환하면 YES 현재 정책 설정에 필요한 경우 SDK가 WKWebView 또는 SFSafariViewController가 아닌 Microsoft Edge에서 URL을 엽니다. 이렇게 하면 앱 내의 사용자 또는 조직 데이터가 외부 웹 사이트로 유출될 수 없습니다.

웹 보기 API 예제

앱은 다섯 가지 웹 보기(A, B, C, D, E)로 빌드됩니다. 웹 보기 A, B 및 C에는 사용자 또는 조직 데이터가 표시되지 않습니다. 웹 보기 D는 회사의 모든 사용자가 사용할 수 있는 organization 페이지를 표시합니다. 웹 보기 E는 링크를 포함할 수 있는 사용자의 문서를 렌더링합니다.

대부분의 웹 보기가 관리되지 않으므로(A, B, C) 호출해야 하는 setWebViewPolicy:forWebViewer:횟수를 줄이도록 설정할 TreatAllWebViewsAsUnmanaged 수 있습니다.

웹 보기 D와 E는 사용자 콘텐츠를 표시하고 모든 웹 보기는 기본적으로 관리되지 않으므로 이제 를 사용하여 IntuneMAMWebViewPolicyCurrentIdentity태그를 지정 setWebViewPolicy:forWebViewer: 해야 합니다.

웹 보기 E에는 사용자가 클릭할 수 있고 임의의 URL로 이동하는 데 사용할 수 있는 링크가 포함되어 있으므로 다음을 사용하여 setWebViewPolicyDelegate:forWebViewer:구현하고 웹 보기 E로 설정해야 IntuneMAMWebViewPolicyDelegate 합니다. 구현에서는 isExternalURL: 들어오는 URL을 검사하여 문서의 URL과 동일한지 확인할 수 있습니다. 일치하지 않는 경우 외부 URL임을 알고 반환할 수 있습니다 YES. 일치하는 경우 내부 URL임을 알고 반환할 수 있습니다 NO.

이러한 API를 구현하고 호출한다는 것은 관리되는 사용자 또는 조직 콘텐츠가 웹 보기 A, B 및 C로 누출될 수 없음을 의미합니다. 또한 사용자가 문서 내의 링크를 클릭하여 E에서 탐색할 수 있는 외부 URL에 관리되는 콘텐츠가 누출될 수 없음을 의미합니다. 또한 웹 보기의 데이터가 D 및 E가 앱 외부로 누출되는 것을 방지하여 관리되는 콘텐츠가 보호됩니다.