3단계: iOS 앱에 SDK 통합 Intune

참고

이 가이드는 여러 가지 개별 단계로 나뉩니다. 먼저 통합 계획을 검토합니다.

스테이지 Goals

  • Intune 앱 SDK를 다운로드합니다.
  • Intune 앱 SDK에 포함된 파일을 알아봅니다.
  • 애플리케이션에서 Intune 앱 SDK를 참조합니다.
  • Intune 앱 SDK가 빌드에 제대로 포함되어 있는지 확인합니다.
  • MSAL을 사용하여 인증한 후 MAM 관리를 위한 새 계정을 등록합니다.
  • 로그아웃 시 계정 등록을 취소하여 회사 데이터를 제거합니다.
  • (권장) 앱에 MAM 로깅을 통합합니다.

필수 구성 요소

  • Xcode 14.0 이상이 설치된 macOS 컴퓨터가 필요합니다.

  • 앱은 iOS 14.0 이상을 대상으로 해야 합니다.

  • iOS 사용 조건에 대한 Intune 앱 SDK를 검토합니다. 레코드에 대한 사용 조건의 복사본을 인쇄하고 유지합니다. iOS용 Intune 앱 SDK를 다운로드하고 사용하여 이러한 사용 조건에 동의합니다. 동의하지 않는 경우 소프트웨어를 사용하지 마세요.

  • GitHub에서 iOS용 Intune 앱 SDK에 대한 파일을 다운로드합니다.

SDK 리포지토리의 내용

  • IntuneMAMSwift.xcframework: Intune 앱 SDK 프레임워크입니다. 이 프레임워크를 앱/확장에 연결하여 Intune 클라이언트 애플리케이션 관리를 사용하도록 설정하는 것이 좋습니다. 그러나 일부 개발자는 정적 라이브러리의 성능 이점을 선호할 수 있습니다. 다음을 참조하세요.

  • libIntuneMAMSwift.xcframework: Intune 앱 SDK 정적 라이브러리입니다. 개발자는 프레임워크 대신 정적 라이브러리를 연결하도록 선택할 수 있습니다. 정적 라이브러리는 빌드 시 앱/확장 이진 파일에 직접 포함되므로 정적 라이브러리를 사용하는 데 몇 가지 시작 시간 성능 이점이 있습니다. 그러나 앱에 통합하는 것은 더 복잡한 프로세스입니다. 앱에 확장이 포함된 경우 정적 라이브러리를 앱에 연결하고 확장을 연결하면 정적 라이브러리가 각 앱/확장 이진 파일에 포함되므로 앱 번들 크기가 커집니다. 프레임워크를 사용하는 경우 앱 및 확장은 동일한 Intune SDK 이진 파일을 공유할 수 있으므로 앱 크기가 작아질 수 있습니다.

  • IntuneMAMSwiftStub.xcframework: Intune 앱 SDK Swift 스텁 프레임워크입니다. 이는 앱/확장이 연결해야 하는 IntuneMAMSwift.xcframework 및 libIntuneMAMSwift.xcframework 모두의 필수 종속성입니다.

  • IntuneMAMResources.bundle: SDK가 사용하는 리소스를 포함하는 리소스 번들입니다. 리소스 번들은 정적 라이브러리(libIntuneMAMSwift.xcframework)를 통합하는 앱에만 필요합니다.

  • IntuneMAMConfigurator: Intune 관리에 필요한 최소 변경 내용으로 앱 또는 확장의 Info.plist를 구성하는 데 사용되는 도구입니다. 앱 또는 확장의 기능에 따라 Info.plist를 수동으로 추가 변경해야 할 수 있습니다.

Intune 앱 SDK 작동 방식

iOS용 Intune 앱 SDK의 목적은 최소한의 코드 변경으로 iOS 애플리케이션에 관리 기능을 추가하는 것입니다. 코드가 적을수록 출시 시간이 줄어들지만 모바일 애플리케이션의 일관성과 안정성에는 영향을 주지 않습니다.

프로세스 흐름

다음 다이어그램에서는 iOS 프로세스 흐름에 대한 Intune App SDK를 제공합니다.

Microsoft Intune 대한 개략적인 아키텍처 다이어그램

모바일 앱에 SDK 빌드

중요

Intune 정기적으로 Intune 앱 SDK에 대한 업데이트를 릴리스합니다. 업데이트를 위해 iOS용 Intune 앱 SDK를 정기적으로 검사 소프트웨어 개발 릴리스 주기에 통합하여 앱이 최신 앱 보호 정책 설정을 지원하도록 합니다.

Intune 앱 SDK를 사용하도록 설정하려면 다음 단계를 수행합니다.

  1. 옵션 1 - 프레임워크(권장): 대상에 연결 및 IntuneMAMSwiftStub.xcframework 연결IntuneMAMSwift.xcframework: 프로젝트 대상의 프레임워크, 라이브러리 및 포함된 콘텐츠 목록으로 끌어 IntuneMAMSwift.xcframeworkIntuneMAMSwiftStub.xcframework 다 옵니다.

    Intune 앱 SDK iOS 프레임워크: Xcode 프레임워크, 라이브러리 및 포함된 콘텐츠 샘플

    옵션 2 - 정적 라이브러리: 대상에 연결 및 IntuneMAMSwiftStub.xcframework 연결libIntuneMAMSwift.xcframework: 프로젝트 대상의 프레임워크, 라이브러리 및 포함된 콘텐츠 목록으로 끌어 libIntuneMAMSwift.xcframeworkIntuneMAMSwiftStub.xcframework 다 옵니다.

    Intune 앱 SDK iOS 정적 라이브러리: Xcode Frameworks, 라이브러리 및 포함된 콘텐츠 샘플의 스크린샷

    참고

    현재 iOS 15 시뮬레이터에서 SDK 정적 lib를 실행하는 경우 AppleArchive가 없기 때문에 충돌이 발생할 수 있습니다. 이 문제는 기본 앱 대상에서 명시적으로 약한 연결을 libSwiftAppleArchive "선택 사항"으로 표시하여 해결할 수 있습니다.

    Intune 앱 SDK iOS 정적 라이브러리: 약한 연결 Apple Archive 샘플의 스크린샷.

    IntuneMAMResources.bundle빌드 단계 내의 번들 리소스 복사에서 리소스 번들을 끌어 프로젝트에 리소스 번들을 추가합니다.

    Intune 앱 SDK iOS: 번들 리소스 복사

  2. 프로젝트에 다음 iOS 프레임워크를 추가합니다.

    • MessageUI.framework
    • Security.framework
    • CoreServices.framework
    • SystemConfiguration.framework
    • libsqlite3.tbd
    • libc++.tbd
    • ImageIO.framework
    • LocalAuthentication.framework
    • AudioToolbox.framework
    • QuartzCore.framework
    • WebKit.framework
    • MetricKit.framework
  3. 각 프로젝트 대상에서 기능을 선택하고 키 집합 공유 스위치를 사용하도록 설정하여 키체인 공유를 사용하도록 설정합니다(아직 사용하도록 설정되지 않은 경우). 다음 단계를 진행하려면 키 집합 공유가 필요합니다.

    참고

    프로비저닝 프로필은 새 키체인 공유 값을 지원해야 합니다. 키체인 액세스 그룹은 와일드카드 문자를 지원해야 합니다. 텍스트 편집기에서 .mobileprovision 파일을 열고, 키체인 액세스 그룹을 검색하고, 와일드카드 문자가 있는지 확인하여 이 검사 수 있습니다. 예를 들면

    <key>keychain-access-groups</key>
    <array>
    <string>YOURBUNDLESEEDID.*</string>
    </array>
    
  4. 키체인 공유를 사용하도록 설정한 후 단계에 따라 Intune 앱 SDK에서 데이터를 저장할 별도의 액세스 그룹을 만듭니다. UI를 사용하거나 권한 파일을 사용하여 키체인 액세스 그룹을 만들 수 있습니다. UI를 사용하여 키체인 액세스 그룹을 만드는 경우 다음 단계를 수행해야 합니다.

    1. 모바일 앱에 정의된 키체인 액세스 그룹이 없는 경우 앱의 번들 ID를 첫 번째 그룹으로 추가합니다.

    2. 공유 키체인 그룹을 com.microsoft.intune.mam 기존 액세스 그룹에 추가합니다. Intune 앱 SDK는 이 액세스 그룹을 사용하여 데이터를 저장합니다.

    3. 기존 액세스 그룹에 추가 com.microsoft.adalcache 합니다.

      Intune 앱 SDK iOS: 키체인 공유

    4. 위에 표시된 Xcode UI를 사용하여 키체인 액세스 그룹을 만드는 대신 권한 파일을 직접 편집하는 경우 키체인 액세스 그룹 $(AppIdentifierPrefix) 앞에 를 추가합니다(Xcode는 자동으로 처리됨). 예를 들면

      • $(AppIdentifierPrefix)com.microsoft.intune.mam
      • $(AppIdentifierPrefix)com.microsoft.adalcache

      참고

      권한 파일은 모바일 애플리케이션에 고유한 XML 파일입니다. iOS 앱에서 특수 권한 및 기능을 지정하는 데 사용됩니다. 앱에 이전에 권한 파일이 없는 경우 키체인 공유(3단계)를 사용하도록 설정하면 Xcode에서 앱에 대한 파일을 생성해야 합니다. 앱의 번들 ID가 목록의 첫 번째 항목인지 확인합니다.

  5. 앱이 전달하는 각 프로토콜을 UIApplication canOpenURLLSApplicationQueriesSchemes 앱의 Info.plist 파일 배열에 포함합니다. 이 배열에 나열된 각 프로토콜에 대해 가 추가된 -intunemam 프로토콜의 복사본도 배열에 추가해야 합니다. 또한 , , , , , , , , , wandera, lookoutwork-ase, skycurebetteractiveshield, , smsec, 및 scmxmvisionmobileintunemam-mtd 배열에 추가해야 합니다. lacoonsecurityzipssmart-nsmicrosoft-edge-https-intunemammicrosoft-edge-http-intunemamhttps-intunemamhttp-intunemam 앱에서 mailto: 프로토콜 ms-outlook-intunemam 을 사용하는 경우 배열에도 를 추가해야 합니다. 다음 단계로 진행하기 전에 변경 내용을 저장해야 합니다.

    앱이 LSApplicationQueriesSchemes 목록에 공간이 부족하면 Intune MAM SDK를 구현하는 것으로 알려진 앱에 대한 "-intunemam" 체계를 제거할 수 있습니다. 앱이 LSApplicationQueriesSchemes 목록에서 canOpenURL() "scheme-intunemam"을 제거하면 해당 스키마에 대한 잘못된 응답을 반환할 수 있습니다. 이 문제를 해결하려면 앱에서 해당 구성표를 대신 호출 [IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES] 해야 합니다. 정책이 URL을 열지 못하도록 차단하면 이 호출이 반환 NO 됩니다. true를 반환하는 경우 앱은 빈 ID를 사용하여 를 호출 canOpenURL() 하여 URL을 열 수 있는지 확인할 수 있습니다. 예를 들면

    BOOL __block canOpen = NO;
    if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES])
    {
        [[IntuneMAMPolicyManager instance] setCurrentThreadIdentity:"" forScope:^{
        canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp];
        }];
    }
    
  6. 앱에서 FaceID를 아직 사용하지 않는 경우 NSFaceIDUsageDescription Info.plist 키가 기본 메시지로 구성되어 있는지 확인합니다. iOS에서 앱이 FaceID를 사용하는 방법을 사용자에게 알릴 수 있도록 이 작업이 필요합니다. Intune 앱 보호 정책 설정을 사용하면 IT 관리자가 구성할 때 FaceID를 앱 액세스 방법으로 사용할 수 있습니다.

  7. SDK 리포지토리에 포함된 IntuneMAMConfigurator 도구를 사용하여 앱의 Info.plist 구성을 완료합니다. 도구에는 다음과 같은 세 가지 매개 변수가 있습니다.

    속성 사용 방법
    -나 <Path to the input plist>
    -전자 <Path to the entitlements file>
    -O (선택 사항) <Path to the output plist>

    '-o' 매개 변수를 지정하지 않으면 입력 파일이 현재 위치에서 수정됩니다. 도구는 idempotent이며 앱의 Info.plist 또는 자격 변경이 있을 때마다 다시 실행해야 합니다. 또한 최신 릴리스에서 Info.plist 구성 요구 사항이 변경된 경우 Intune SDK를 업데이트할 때 최신 버전의 도구를 다운로드하고 실행해야 합니다.

Xcode 빌드 설정

앱에는 "스트립 스위프트 기호"(STRIP_SWIFT_SYMBOLS)와 "비트 코드 사용"(ENABLE_BITCODE)이 모두 NO로 설정되어 있어야 합니다.

파일 공급자 확장 프로그램 통합

파일 공급자 확장에는 전체 SDK를 통합하기가 어려울 수 있는 특정 메모리 요구 사항이 있습니다. 더 쉽게 하기 위해 파일 공급자 확장명용 SDK의 제거된 버전인 정적 라이브러리 libIntuneMAMSwiftFileProvider.xcframework 가 있습니다. FileProvider 확장의 UI가 아닌 부분에 대한 것입니다. 전체 SDK를 파일 공급자 UI 확장에 통합해야 합니다.

이러한 라이브러리 중 하나를 파일 공급자 확장명과 통합하려면 위와 같이 SDK를 정적 라이브러리로 통합하는 단계를 수행합니다. 설정을 포함 ContainingAppBundleId 해야 합니다.

다중 ID 앱인 경우 의 메서드IntuneMAMFileProtectionManager를 사용하여 API의 파일 공급자 열거자에서 - enumeratorForContainerItemIdentifier:error: 현재 사용자 ID를 setIdentity:onFileProviderEnumerator: 설정해야 합니다.

- startProvidingItemAtURL:completionHandler: 를 사용하여 [[IntuneMAMPolicy instance]shouldFileProviderEncryptFiles]]파일을 암호화해야 하는 경우 검사. 실제 파일 암호화에 IntuneMAMFileProtectionManager 의 API를 사용합니다encryptFile:forIdentity. 또한 암호화가 필요한 경우 클라우드 스토리지에 파일의 암호화된 복사본을 저장하지 않으려면 파일 복사본을 공유합니다.

검사 에서 - importDocumentAtURL:toParentItemIdentifier:completionHandler: 에서 API를 사용하여 isFileEncrytped: 파일을 암호화하는지 여부를 확인합니다IntuneMAMFileProtectionManager. 이 경우 의 APIIntuneMAMFileProtectionManager를 사용하여 decryptFile:toCopyPath: 암호를 해독합니다.

Intune 앱 SDK에 대한 설정 구성

애플리케이션의 Info.plist 파일에서 IntuneMAMSettings 사전을 사용하여 Intune 앱 SDK를 설정하고 구성할 수 있습니다. Info.plist 파일에 IntuneMAMSettings 사전이 표시되지 않으면 만들어야 합니다.

IntuneMAMSettings 사전에서 지원되는 다음 설정을 정의하여 Intune 앱 SDK를 구성할 수 있습니다.

이러한 설정 중 일부는 이전 섹션에서 다루었을 수 있으며 일부 설정은 모든 앱에 적용되지 않습니다.

설정 유형 정의 필수 여부
ADALClientId String 앱의 Microsoft Entra 클라이언트 식별자입니다. 모든 앱에 필요합니다.
ADALAuthority String 사용 중인 앱의 Microsoft Entra 기관입니다. Microsoft Entra 계정이 구성된 사용자 고유의 환경을 사용해야 합니다. 자세한 내용은 애플리케이션 구성 옵션을 참조하세요. 앱이 단일 organization/Microsoft Entra 테넌트 내에서 사용하도록 빌드된 사용자 지정 기간 업무 애플리케이션인 경우 필요합니다. 이 값이 없으면 공용 Microsoft Entra 기관이 사용됩니다(다중 테넌트 애플리케이션에 대해서만 지원됨).
ADALRedirectUri String 앱의 Microsoft Entra 리디렉션 URI입니다. 모든 앱에는 ADALRedirectUri 또는 ADALRedirectScheme이 필요합니다.
ADALRedirectScheme String 앱의 Microsoft Entra ID 리디렉션 체계입니다. 애플리케이션의 리디렉션 URI가 형식 scheme://bundle_id인 경우 ADALRedirectUri 대신 사용할 수 있습니다. 모든 앱에는 ADALRedirectUri 또는 ADALRedirectScheme이 필요합니다.
ADALLogOverrideDisabled 부울 SDK가 모든 MSAL 로그(앱의 MSAL 호출 포함(있는 경우)를 자체 로그 파일로 라우팅할지 여부를 지정합니다. 기본값은 NO입니다. 앱이 자체 MSAL 로그 콜백을 설정하는 경우 YES로 설정합니다. 선택 사항.
ADALCacheKeychainGroupOverride String "com.microsoft.adalcache" 대신 MSAL 캐시에 사용할 키체인 그룹을 지정합니다. 앱 ID 접두사는 없습니다. 런타임에 제공된 문자열에 접두사로 지정됩니다. 선택 사항.
AppGroupIdentifiers 문자열 배열 앱의 권한 com.apple.security.application-groups 섹션의 앱 그룹 배열입니다. 앱에서 애플리케이션 그룹을 사용하는 경우 필요합니다.
ContainingAppBundleId String 확장이 포함된 애플리케이션의 번들 ID를 지정합니다. iOS 확장에 필요합니다.
AutoEnrollOnLaunch 부울 기존 관리 ID가 검색되고 아직 등록하지 않은 경우 앱이 시작 시 자동으로 등록을 시도할지 여부를 지정합니다. 기본값은 NO입니다.

참고: 관리 ID를 찾을 수 없거나 MSAL 캐시에서 ID에 대한 유효한 토큰을 사용할 수 없는 경우 앱이 MAMPolicyRequired를 YES로 설정하지 않는 한 자격 증명을 묻는 메시지 없이 등록 시도가 자동으로 실패합니다.
선택 사항. 기본값은 아니요입니다.
MAMPolicyRequired 부울 앱에 Intune 앱 보호 정책이 없는 경우 앱의 시작이 차단되는지 여부를 지정합니다. 기본값은 NO입니다.

참고: MAMPolicyRequired가 YES로 설정된 App Store 앱을 제출할 수 없습니다. MAMPolicyRequired를 YES로 설정하면 AutoEnrollOnLaunch도 YES로 설정해야 합니다.
선택 사항. 기본값은 아니요입니다.
MAMPolicyWarnAbsent 부울 앱에 Intune 앱 보호 정책이 없는 경우 앱이 시작 중에 사용자에게 경고할지 여부를 지정합니다.

참고: 사용자는 경고를 해제한 후에도 정책 없이 앱을 사용할 수 있습니다.
선택 사항. 기본값은 아니요입니다.
MultiIdentity 부울 앱이 다중 ID 인식인지 여부를 지정합니다. 선택 사항. 기본값은 아니요입니다.
SafariViewControllerBlockedOverride 부울 SFSafariViewController, SFAuthSession 또는 ASWebAuthSession을 통해 MSAL 인증을 사용하도록 설정하려면 Intune SafariViewController 후크를 사용하지 않도록 설정합니다.

참고: SFSafariViewControllerConfiguration 작업 단추 속성은 Intune 관리되는 Safari 뷰 컨트롤러에서 지원되지 않습니다. 구성된 활동 단추 는 보기가 관리되지 않고 SafariViewControllerBlockedOverride가 예로 설정된 경우에만 SafariViewController에 표시됩니다.
선택 사항. 기본값은 아니요입니다. 경고: 부적절하게 사용하면 데이터 유출이 발생할 수 있습니다. 반드시 필요한 경우에만 사용하도록 설정합니다. 자세한 내용은 앱 시작 인증에 MSAL을 사용할 때의 특별 고려 사항을 참조하세요.
SplashIconFile
SplashIconFile~ipad
String 시작 Intune 아이콘 파일을 지정합니다. 선택 사항.
SplashDuration 숫자 애플리케이션 시작 시 Intune 시작 화면이 표시되는 최소 시간(초)입니다. 기본값은 1.5입니다. 선택 사항.
Backgroundcolor String Intune SDK의 UI 구성 요소에 대한 배경색을 지정합니다. X가 0-9 또는 A-F의 범위를 지정할 수 있는 #XXXXXX 형식의 16진수 RGB 문자열을 허용합니다. 파운드 기호를 생략할 수 있습니다. 선택 사항. 기본값은 iOS 버전과 iOS 어둡게 모드 설정에 따라 달라질 수 있는 시스템 배경색입니다.
ForegroundColor String 텍스트 색과 같은 Intune SDK UI 구성 요소의 전경색을 지정합니다. X가 0-9 또는 A-F의 범위를 지정할 수 있는 #XXXXXX 형식의 16진수 RGB 문자열을 허용합니다. 파운드 기호를 생략할 수 있습니다. 선택 사항. 기본값은 iOS 버전과 iOS 어둡게 모드 설정에 따라 달라질 수 있는 시스템 레이블 색입니다.
AccentColor String 단추 텍스트 색 및 PIN 상자 강조 색과 같은 Intune SDK의 UI 구성 요소에 대한 강조 색을 지정합니다. X가 0-9 또는 A-F의 범위를 지정할 수 있는 #XXXXXX 형식의 16진수 RGB 문자열을 허용합니다. 파운드 기호를 생략할 수 있습니다. 선택 사항. 기본값은 시스템 파란색입니다.
SecondaryBackgroundColor String MTD 화면의 보조 배경색을 지정합니다. X가 0-9 또는 A-F의 범위를 지정할 수 있는 #XXXXXX 형식의 16진수 RGB 문자열을 허용합니다. 파운드 기호를 생략할 수 있습니다. 선택 사항. 기본값은 흰색입니다.
SecondaryForegroundColor String MTD 화면의 보조 전경색(예: 각주 색)을 지정합니다. X가 0-9 또는 A-F의 범위를 지정할 수 있는 #XXXXXX 형식의 16진수 RGB 문자열을 허용합니다. 파운드 기호를 생략할 수 있습니다. 선택 사항. 기본값은 회색입니다.
SupportsDarkMode 부울 BackgroundColor/ForegroundColor/AccentColor에 대해 명시적 값이 설정되지 않은 경우 Intune SDK의 UI 색 구성표가 시스템 어둡게 모드 설정을 준수해야 하는지 여부를 지정합니다. 선택 사항. 기본값은 예입니다.
MAMTelemetryDisabled 부울 SDK가 원격 분석 데이터를 백 엔드로 보내지 않을지 지정합니다. 선택 사항. 기본값은 아니요입니다.
MAMTelemetryUsePPE 부울 MAM SDK가 PPE 원격 분석 백 엔드에 데이터를 보낼지 지정합니다. 테스트 원격 분석 데이터가 고객 데이터와 혼합되지 않도록 Intune 정책으로 앱을 테스트할 때 사용합니다. 선택 사항. 기본값은 아니요입니다.
MaxFileProtectionLevel String 앱에서 지원할 수 있는 최대 NSFileProtectionType 값을 지정할 수 있습니다. 이 값은 수준이 애플리케이션이 지원할 수 있는 수준보다 높은 경우 서비스에서 보낸 정책을 재정의합니다. 가능한 값은 NSFileProtectionComplete, , NSFileProtectionCompleteUntilFirstUserAuthenticationNSFileProtectionCompleteUnlessOpen, 입니다NSFileProtectionNone. 참고: 가장 높은 파일 보호 수준(NSFileProtectionComplete)을 사용하면 디바이스가 잠금 해제되는 동안에만 보호된 파일에 액세스할 수 있습니다. 디바이스가 잠긴 후 10초 후에 앱은 보호된 파일에 대한 액세스 권한을 잃게 됩니다. 경우에 따라 내부 구성 요소(예: MySQL 데이터베이스)에 대한 액세스가 손실되어 예기치 않은 동작이 발생할 수 있습니다. 잠금 화면 UI 요소가 있는 애플리케이션은 이 값을 NSFileProtectionCompleteUntilFirstUserAuthentication로 설정하는 것이 좋습니다. 선택 사항. 기본값은 입니다 NSFileProtectionComplete.
OpenInActionExtension 부울 작업에서 열기 확장의 경우 YES로 설정합니다. 자세한 내용은 UIActivityViewController를 통한 데이터 공유 섹션을 참조하세요.
WebViewHandledURLSchemes 문자열 배열 앱의 WebView에서 처리하는 URL 구성표를 지정합니다. 앱에서 링크 및/또는 JavaScript를 통해 URL을 처리하는 WebView를 사용하는 경우 필요합니다.
DocumentBrowserFileCachePath String 앱에서 를 사용하여 UIDocumentBrowserViewController 다양한 파일 공급자의 파일을 탐색하는 경우 애플리케이션 샌드박스의 홈 디렉터리를 기준으로 이 경로를 설정하여 Intune SDK가 암호 해독된 관리 파일을 해당 폴더에 삭제할 수 있도록 할 수 있습니다. 선택 사항. 기본값은 /Documents/ 디렉터리입니다.
VerboseLoggingEnabled 부울 YES로 설정하면 Intune 자세한 정보 표시 모드로 로그인됩니다. 선택 사항. 기본값은 NO입니다.
FinishLaunchingAtStartup 부울 앱이 사용 [BGTaskScheduler registerForTaskWithIdentifier:] 중인 경우 이 설정을 예로 설정해야 합니다. 선택 사항. 기본값은 NO입니다.
ValuesToScrubFromLogging 문자열 배열 로그에서 스크러빙해야 하는 애플리케이션 구성 값을 지정합니다. 또는 IntuneMAMSettings 클래스의 valuesToScrubFromLogging 속성에 동일한 동작에 대한 문자열 배열을 지정할 수 있습니다. 선택 사항.

앱 보호 정책 받기

개요

Intune 앱 보호 정책을 받으려면 앱이 Intune MAM 서비스를 사용하여 등록 요청을 시작해야 합니다. 디바이스 등록 여부에 관계없이 앱 보호 정책을 수신하도록 Intune 관리 센터에서 앱을 구성할 수 있습니다. MAM(모바일 애플리케이션 관리)을 사용하면 Intune MDM(모바일 디바이스 관리)에 디바이스를 등록할 필요 없이 Intune 앱을 관리할 수 있습니다. 두 경우 모두 정책을 수신하려면 Intune MAM 서비스에 등록해야 합니다.

중요

iOS용 Intune 앱 SDK는 앱 보호 정책에서 암호화를 사용하는 경우 256비트 암호화 키를 사용합니다. 보호된 데이터 공유를 허용하려면 모든 앱에 현재 SDK 버전이 있어야 합니다.

이미 ADAL 또는 MSAL을 사용하는 앱

참고

ADAL(Azure AD 인증 라이브러리) 및 Azure AD Graph API 더 이상 사용되지 않습니다. 자세한 내용은 MSAL(Microsoft 인증 라이브러리) 및 Microsoft Graph API를 사용하도록 애플리케이션 업데이트를 참조하세요..

이미 ADAL 또는 MSAL을 사용하는 앱은 사용자가 성공적으로 인증된 후 instance 메서드 IntuneMAMEnrollmentManager 를 호출 registerAndEnrollAccount 해야 합니다.

/*
 *  This method will add the account to the list of registered accounts.
 *  An enrollment request will immediately be started.
 *  @param identity The UPN of the account to be registered with the SDK
 */

(void)registerAndEnrollAccount:(NSString *)identity;

메서드를 registerAndEnrollAccount 호출하여 SDK는 사용자 계정을 등록하고 이 계정을 대신하여 앱을 등록하려고 시도합니다. 어떤 이유로든 등록이 실패하면 SDK는 24시간 후에 자동으로 등록을 다시 시도합니다. 디버깅을 위해 앱은 대리자를 통해 등록 요청의 결과에 대한 알림을 받을 수 있습니다.

이 API가 호출된 후에도 앱은 정상적으로 계속 작동할 수 있습니다. 등록에 성공하면 SDK는 앱 다시 시작이 필요하다는 사실을 사용자에게 알립니다. 이때 사용자는 즉시 앱을 다시 시작할 수 있습니다.

[[IntuneMAMEnrollmentManager instance] registerAndEnrollAccount:@"user@foo.com"];

ADAL 또는 MSAL을 사용하지 않는 앱

ADAL 또는 MSAL을 사용하여 사용자에게 로그인하지 않는 앱은 API를 호출하여 해당 인증을 처리하도록 API를 호출하여 Intune MAM 서비스에서 앱 보호 정책을 받을 수 있습니다. 앱은 Microsoft Entra ID 사용하여 사용자를 인증하지 않았지만 데이터를 보호하기 위해 앱 보호 정책을 검색해야 하는 경우 이 기술을 사용해야 합니다. 예를 들어 앱 로그인에 다른 인증 서비스를 사용하거나 앱에서 로그인을 전혀 지원하지 않는 경우를 예로 들어 보겠습니다. 이를 위해 애플리케이션은 instance 메서드를 호출 loginAndEnrollAccountIntuneMAMEnrollmentManager 수 있습니다.

/**
 *  Creates an enrollment request which is started immediately.
 *  If no token can be retrieved for the identity, the user will be prompted
 *  to enter their credentials, after which enrollment will be retried.
 *  @param identity The UPN of the account to be logged in and enrolled.
 */
 (void)loginAndEnrollAccount: (NSString *)identity;

이 메서드를 호출하면 기존 토큰을 찾을 수 없는 경우 SDK에서 사용자에게 자격 증명을 묻는 메시지를 표시합니다. 그런 다음 SDK는 제공된 사용자 계정을 대신하여 Intune MAM 서비스에 앱을 등록하려고 시도합니다. "nil"을 ID로 사용하여 메서드를 호출할 수 있습니다. 이 경우 SDK는 디바이스에서 기존 관리되는 사용자(MDM의 경우)에 등록하거나 기존 사용자를 찾을 수 없는 경우 사용자에게 사용자 이름을 묻는 메시지를 표시합니다.

등록에 실패하면 앱은 오류 세부 정보에 따라 나중에 이 API를 다시 호출하는 것을 고려해야 합니다. 앱은 대리자를 통해 등록 요청의 결과에 대한 알림을 받을 수 있습니다.

이 API가 호출된 후 앱은 정상적으로 계속 작동할 수 있습니다. 등록에 성공하면 SDK는 앱 다시 시작이 필요하다는 사실을 사용자에게 알립니다.

예:

[[IntuneMAMEnrollmentManager instance] loginAndEnrollAccount:@"user@foo.com"];

Intune 시작 시 인증 및 등록을 처리하도록 허용

앱 시작이 완료되기 전에 Intune SDK가 ADAL/MSAL 및 등록을 사용하여 모든 인증을 처리하도록 하고 앱에 항상 APP 정책이 필요한 경우 API를 사용할 loginAndEnrollAccount 필요가 없습니다. 앱의 Info.plist에 있는 IntuneMAMSettings 사전에서 아래의 두 설정을 예로 설정할 수 있습니다.

설정 유형 정의
AutoEnrollOnLaunch 부울 기존 관리 ID가 검색되고 아직 등록하지 않은 경우 앱이 시작 시 자동으로 등록을 시도할지 여부를 지정합니다. 기본값은 NO입니다.

참고: 관리 ID를 찾을 수 없거나 ADAL/MSAL 캐시에서 ID에 대한 유효한 토큰을 사용할 수 없는 경우 앱이 MAMPolicyRequired를 YES로 설정하지 않는 한 자격 증명을 묻는 메시지 없이 등록 시도가 자동으로 실패합니다.
MAMPolicyRequired 부울 앱에 Intune 앱 보호 정책이 없는 경우 앱의 시작이 차단되는지 여부를 지정합니다. 기본값은 NO입니다.

참고: MAMPolicyRequired가 YES로 설정된 App Store 앱을 제출할 수 없습니다. MAMPolicyRequired를 YES로 설정하면 AutoEnrollOnLaunch도 YES로 설정해야 합니다.

앱에 대해 이 옵션을 선택하는 경우 등록 후 앱 다시 시작을 처리할 필요가 없습니다.

사용자 계정 등록 취소

사용자가 앱에서 로그아웃되기 전에 앱은 SDK에서 사용자를 등록 취소해야 합니다. 이렇게 하면 다음이 보장됩니다.

  1. 사용자 계정에 대한 등록 재시도는 더 이상 발생하지 않습니다.

  2. 앱 보호 정책이 제거됩니다.

  3. 앱이 선택적 초기화(선택 사항)를 시작하면 회사 데이터가 삭제됩니다.

사용자가 로그아웃되기 전에 앱은 instance 다음 메서드를 IntuneMAMEnrollmentManager 호출해야 합니다.

/*
 *  This method will remove the provided account from the list of
 *  registered accounts.  Once removed, if the account has enrolled
 *  the application, the account will be un-enrolled.
 *  @note In the case where an un-enroll is required, this method will block
 *  until the Intune APP AAD token is acquired, then return.  This method must be called before  
 *  the user is removed from the application (so that required AAD tokens are not purged
 *  before this method is called).
 *  @param identity The UPN of the account to be removed.
 *  @param doWipe   If YES, a selective wipe if the account is un-enrolled
 */
(void)deRegisterAndUnenrollAccount:(NSString *)identity withWipe:(BOOL)doWipe;

사용자 계정의 Microsoft Entra 토큰이 삭제되기 전에 이 메서드를 호출해야 합니다. SDK는 사용자를 대신하여 Intune MAM 서비스에 대한 특정 요청을 하려면 사용자 계정의 Microsoft Entra 토큰이 필요합니다.

앱이 자체적으로 사용자의 회사 데이터를 삭제하는 경우 플래그를 doWipe false로 설정할 수 있습니다. 그렇지 않으면 앱에서 SDK가 선택적 초기화를 시작하게 할 수 있습니다. 그러면 앱의 선택적 초기화 대리자를 호출하게 됩니다.

예:

[[IntuneMAMEnrollmentManager instance] deRegisterAndUnenrollAccount:@"user@foo.com" withWipe:YES];

상태, 결과 및 디버그 알림

앱은 Intune MAM 서비스에 대한 다음 요청에 대한 상태, 결과 및 디버그 알림을 받을 수 있습니다.

  • 등록 요청
  • 정책 업데이트 요청
  • 등록 취소 요청

알림은 의 대리자 메서드를 통해 표시됩니다.IntuneMAMEnrollmentDelegate.h

/**
 *  Called when an enrollment request operation is completed.
 * @param status status object containing debug information
 */

(void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;

/**
 *  Called when a MAM policy request operation is completed.
 *  @param status status object containing debug information
 */
(void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;

/**
 *  Called when a un-enroll request operation is completed.
 *  @Note: when a user is un-enrolled, the user is also de-registered with the SDK
 *  @param status status object containing debug information
 */

(void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus *)status;

이러한 대리자 메서드는 IntuneMAMEnrollmentStatus 다음 정보가 있는 개체를 반환합니다.

  • 요청과 연결된 계정의 ID입니다.
  • 요청 결과를 나타내는 상태 코드
  • 상태 코드에 대한 설명이 있는 오류 문자열
  • 개체입니다 NSError . 이 개체는 반환할 수 있는 IntuneMAMEnrollmentStatus.h특정 상태 코드와 함께 에 정의됩니다.

샘플 코드

대리자 메서드의 예제 구현은 다음과 같습니다.

- (void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
    NSLog(@"enrollment result for identity %@ with status code %ld", status.identity, (unsigned long)status.statusCode);
    NSLog(@"Debug Message: %@", status.errorString);
}

- (void)policyRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
    NSLog(@"policy check-in result for identity %@ with status code %ld", status.identity, (unsigned long)status.statusCode);
    NSLog(@"Debug Message: %@", status.errorString);
}

- (void)unenrollRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
    NSLog(@"un-enroll result for identity %@ with status code %ld", status.identity, (unsigned long)status.statusCode);
    NSLog(@"Debug Message: %@", status.errorString);
}

애플리케이션 다시 시작

앱이 처음으로 MAM 정책을 수신하는 경우 필요한 후크를 적용하려면 다시 시작해야 합니다. 다시 시작해야 한다는 것을 앱에 알리기 위해 SDK는 에서 IntuneMAMPolicyDelegate.h대리자 메서드를 제공합니다.

 - (BOOL) restartApplication

이 메서드의 반환 값은 애플리케이션이 필요한 다시 시작을 처리해야 하는지 SDK에 알려줍니다.

  • true가 반환되면 애플리케이션에서 다시 시작을 처리해야 합니다.

  • false가 반환되면 이 메서드가 반환된 후 SDK가 애플리케이션을 다시 시작합니다. SDK는 사용자에게 애플리케이션을 다시 시작하도록 지시하는 대화 상자를 즉시 표시합니다.

종료 조건

빌드 플러그 인을 구성하거나 명령줄 도구를 빌드 프로세스에 통합한 후 성공적으로 실행되고 있는지 확인합니다.

  • 빌드가 성공적으로 컴파일되고 빌드되는지 확인합니다.
  • 컴파일된 앱을 시작하고, App Protection 정책의 대상이 아닌 Microsoft Entra 사용자와 로그인하고, 앱이 예상대로 작동하는지 확인합니다.
  • 앱 보호 정책을 대상으로 하는 Microsoft Entra 사용자와 함께 이 테스트를 로그아웃하고 반복하고 이제 앱이 Intune 의해 관리되고 다시 시작되어 있는지 확인합니다.

통합의 이 시점에서 앱은 이제 앱 보호 정책을 수신하고 적용할 수 있습니다. 다음 테스트를 실행하여 통합의 유효성을 검사합니다.

첫 번째 정책 애플리케이션 테스트

먼저 다음 테스트를 실행하여 앱 내에서 정책 애플리케이션의 전체 최종 사용자 환경을 알아봅니다.

  1. Microsoft Intune 관리 센터에서 iOS 앱 보호 정책을 만듭니다. 이 테스트의 경우 정책을 구성합니다.
    • 액세스 요구 사항에서 기본 설정을 그대로 둡니다. 특히 "액세스용 PIN"은 "필요"여야 합니다.
  2. 앱 보호 정책이 애플리케이션을 대상으로 지정되었는지 확인합니다. 정책 만들기 마법사에서 애플리케이션의 번들 ID를 수동으로 추가해야 할 수 있습니다.
  3. 테스트 계정이 포함된 사용자 그룹에 앱 보호 정책을 할당합니다.
  4. 애플리케이션을 설치합니다.
  5. 앱 보호 정책을 대상으로 하는 테스트 계정으로 애플리케이션에 로그인합니다.
  6. Intune 관리 화면이 표시되고 프롬프트가 앱을 다시 시작하는지 확인합니다. 이는 SDK가 이 계정에 대한 정책을 성공적으로 검색했음을 나타냅니다.
  7. 앱 PIN을 설정하라는 메시지가 표시됩니다. PIN을 만듭니다.
  8. 애플리케이션에서 관리되는 계정을 기록합니다.
  9. 로그인하지 않고 가능하면 애플리케이션을 탐색하고 앱이 예상대로 작동하는지 확인합니다.

앱이 계정을 올바르게 등록하고, 인증 콜백을 등록하고, 계정을 등록 취소했는지 확인하는 *최소 최소 테스트입니다. 다음 테스트를 실행하여 다른 앱 보호 정책 설정이 애플리케이션의 동작을 수정하는 방법을 보다 철저하게 확인합니다.

다음 단계

위의 모든 종료 조건을 완료한 후 4단계: 앱 참여 기능을 계속 진행합니다.