다음을 통해 공유


iOS용 Intune 앱 SDK - 웹 보기 기능

애플리케이션 내에서 웹 콘텐츠 표시

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WKWebView가 두 번째 인수로 전달된 UIView 또는 UIViewController의 자식인 경우 이 API가 호출될 때 뷰 계층 구조 내에 존재할 필요가 없습니다. UIView 또는 UIViewController에 전달된 의 모든 자식 WKWebView는 추가될 때 적절한 정책을 적용합니다.

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

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

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

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

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

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

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

IntuneMAMWebViewPolicyDelegate를 사용하여 IntuneMAMPolicyManagersetWebViewPolicyDelegate:forWebViewer:를 구현하고 웹 보기로 설정할 수 있습니다. 에 IntuneMAMWebViewPolicyDelegate 필요한 메서드가 하나 있습니다 isExternalURL:.

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

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

웹 보기 API 예제

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

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

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

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

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

SwiftUI 지원

새로 만든 SwiftUI 앱은 UIScenes를 지원하지만 기본적으로 구현된 UISceneDelegate는 없습니다. 앱이 UIScenes를 지원하고 Intune 앱 SDK를 사용하려는 경우 UISceneDelegate를 구현해야 합니다. UIScenes UIApplicationSceneManifest 를 지원하지 않으려면 앱의 Info.plist에서 ("애플리케이션 장면 매니페스트"라고도 함) 설정을 제거해야 합니다.