Compartilhar via


Estágio 3: Intune integração do SDK ao aplicativo iOS

Observação

Este guia é dividido em vários estágios distintos. Comece examinando Planejar a Integração.

Goals de estágio

  • Baixe o SDK do aplicativo Intune.
  • Saiba quais arquivos estão incluídos no SDK do aplicativo Intune.
  • Referencie o SDK do aplicativo Intune em seu aplicativo.
  • Confirme se o SDK do aplicativo Intune está incluído corretamente em seu build.
  • Registre novas contas para o gerenciamento de MAM após a autenticação com o MSAL.
  • Para remover dados corporativos, cancele o registro de contas no log-out
  • (Recomendado) Incorpore o registro em log do MAM em seu aplicativo.

Pré-requisitos

  • Você precisa de um computador macOS, que tenha o Xcode 14.0 ou posterior instalado.

  • Seu aplicativo deve ser direcionado para o iOS 14.0 ou superior.

  • Examine o SDK do aplicativo Intune para termos de licença do iOS. Imprima e mantenha uma cópia dos termos de licença para seus registros. Ao baixar e usar o SDK do aplicativo Intune para iOS, você concorda com esses termos de licença. Se você não as aceitar, não use o software.

  • Baixe os arquivos do SDK do aplicativo Intune para iOS no GitHub.

O que está no Repositório SDK

  • IntuneMAMSwift.xcframework: a estrutura dinâmica do SDK do aplicativo Intune. É recomendável vincular essa estrutura a seu aplicativo/extensões para habilitar Intune gerenciamento de aplicativos cliente. No entanto, alguns desenvolvedores podem preferir os benefícios de desempenho da estrutura estática (IntuneMAMStatic.xcframework). Confira a seguir.

  • IntuneMAMStatic.xcframework: a estrutura estática Intune SDK do Aplicativo. Os desenvolvedores podem optar por vincular a estrutura estática em vez da estrutura dinâmica. Como o código executável de uma estrutura estática é inserido diretamente no binário de aplicativo/extensão no momento do build, há alguns benefícios de desempenho em tempo de inicialização para usar a biblioteca estática. No entanto, se o aplicativo incluir extensões, vincular a estrutura estática ao aplicativo e as extensões resultará em um tamanho maior do pacote de aplicativos, pois o código executável será inserido em cada binário de aplicativo/extensão. Por outro lado, ao usar a estrutura dinâmica, aplicativos e extensões podem compartilhar o mesmo Intune binário do SDK, resultando em um tamanho de aplicativo menor.

  • IntuneMAMSwiftStub.xcframework: a estrutura do SDK swift do SDK do aplicativo Intune. Essa estrutura é uma dependência necessária do IntuneMAMSwift.xcframework e do IntuneMAMStatic.xcframework que os aplicativos/extensões devem vincular.

  • IntuneMAMConfigurator: uma ferramenta usada para configurar o info.plist do aplicativo ou da extensão com as alterações mínimas necessárias para Intune gerenciamento. Dependendo da funcionalidade do aplicativo ou da extensão, talvez seja necessário fazer mais alterações manuais no Info.plist.

  • libIntuneMAMSwift.xcframework: a biblioteca estática Intune SDK do Aplicativo. Essa variante do SDK do iOS do Intune MAM está preterida e será removida em uma atualização futura. É recomendável que você não vincule a biblioteca estática e, em vez disso, vincule seu aplicativo/extensões à estrutura dinâmica (IntuneMAMSwift.xcframework) ou à estrutura estática (IntuneMAMStatic.xcframework) mencionada anteriormente.

  • IntuneMAMResources.bundle: um pacote de recursos que contém recursos que o SDK depende. O pacote de recursos é necessário apenas para aplicativos que integram a biblioteca estática preterida (libIntuneMAMSwift.xcframework) e será removido em uma atualização futura.

Como funciona o SDK do aplicativo Intune

O objetivo do SDK do aplicativo Intune para iOS é adicionar recursos de gerenciamento a aplicativos iOS com alterações mínimas de código. Quanto menos o código altera menos tempo para o mercado, mas sem afetar a consistência e a estabilidade do seu aplicativo móvel.

Fluxo de processo

O diagrama a seguir fornece o SDK do aplicativo Intune para fluxo de processo iOS:

Diagrama de arquitetura de alto nível para Microsoft Intune.

Criar o SDK em seu aplicativo móvel

Importante

Intune libera regularmente as atualizações para o SDK do aplicativo Intune. Marcar regularmente o SDK do aplicativo Intune para iOS para atualizações e incorpore em seu ciclo de versão de desenvolvimento de software para garantir que seus aplicativos dêem suporte às configurações mais recentes da Política de Proteção de Aplicativo.

Para habilitar o SDK do aplicativo Intune, siga estas etapas:

  1. IntuneMAMSwift.xcframework Vincular ou IntuneMAMStatic.xcframework ao destino: arraste o pacote xcframework para a lista Estruturas, Bibliotecas e Conteúdo Inserido do destino do projeto. Repita estas etapas para IntuneMAMSwiftStub.xcframework. Para seu aplicativo main, selecione "Inserir & Entrar" na coluna "Inserir" para ambos os xcframeworks adicionados. Para quaisquer extensões, selecione "Não inserir".

    Intune Estrutura iOS do SDK do Aplicativo: Estruturas de Xcode, Bibliotecas e Exemplo de Conteúdo Inserido

  2. Adicione estas estruturas iOS ao projeto:

    • 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. Habilite keychain compartilhamento (se ainda não estiver habilitado) escolhendo Recursos em cada destino de projeto e habilitando o comutador de compartilhamento de chavechain. O compartilhamento de chave é necessário para que você prossiga para a próxima etapa.

    Observação

    Seu perfil de provisionamento precisa dar suporte a novos valores de compartilhamento de keychain. Os grupos de acesso keychain devem dar suporte a um caractere curinga. Você pode marcar isso abrindo o arquivo .mobileprovision em um editor de texto, procurando grupos de acesso keychain e garantindo que você tenha um caractere curinga. Por exemplo:

    <key>keychain-access-groups</key>
    <array>
    <string>YOURBUNDLESEEDID.*</string>
    </array>
    
  4. Depois de habilitar keychain compartilhamento, siga as etapas para criar um grupo de acesso separado no qual o SDK do aplicativo Intune armazenará seus dados. Você pode criar um grupo de acesso keychain usando a interface do usuário ou usando o arquivo de direitos. Se você estiver usando a interface do usuário para criar o grupo de acesso keychain, siga estas etapas:

    1. Se o aplicativo móvel não tiver nenhum grupo de acesso keychain definido, adicione a ID do pacote do aplicativo como o primeiro grupo.

    2. Adicione o grupo com.microsoft.intune.mam de keychain compartilhado aos seus grupos de acesso existentes. O SDK do aplicativo Intune usa esse grupo de acesso para armazenar dados.

    3. Adicione com.microsoft.adalcache aos grupos de acesso existentes.

      Intune sDK do aplicativo iOS: compartilhamento de keychain

    4. Se você estiver editando o arquivo de direitos diretamente, em vez de usar a interface do usuário do Xcode mostrada acima para criar os grupos de acesso keychain, prepare o keychain grupos de acesso com $(AppIdentifierPrefix) (o Xcode manipula isso automaticamente). Por exemplo:

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

      Observação

      Um arquivo de direitos é um arquivo XML exclusivo do seu aplicativo móvel. Ele é usado para especificar permissões e recursos especiais em seu aplicativo iOS. Se seu aplicativo não tivesse um arquivo de direitos anteriormente, habilitar keychain compartilhamento (etapa 3) deveria ter feito com que o Xcode gerasse um para seu aplicativo. Verifique se a ID do pacote do aplicativo é a primeira entrada na lista.

  5. Inclua cada protocolo para UIApplication canOpenURL o qual seu aplicativo passa na LSApplicationQueriesSchemes matriz do arquivo Info.plist do aplicativo. Para cada protocolo listado nesta matriz, uma cópia do protocolo acrescentado também -intunemam precisa ser adicionada à matriz. Além disso, http-intunemam, , https-intunemam, microsoft-edge-http-intunemam, smart-nsmicrosoft-edge-https-intunemam, zips, lacoonsecurity, , wandera, lookoutwork-ase, skycure, betteractiveshield, , smsec, mvisionmobile, , scmx, e intunemam-mtd deve ser adicionado à matriz. Se o aplicativo usar o protocolo mailto:, ms-outlook-intunemam também deve ser adicionado à matriz. Certifique-se de salvar suas alterações antes de prosseguir para a próxima etapa.

    Se o aplicativo ficar sem espaço em sua lista LSApplicationQueriesSchemes, ele poderá remover os esquemas "-intunemam" para aplicativos conhecidos por também implementar o SDK do MAM Intune. Quando o aplicativo remove "scheme-intunemam" da lista LSApplicationQueriesSchemes, canOpenURL() pode retornar respostas incorretas para esses esquemas. Para corrigir esse problema, o aplicativo deve, em vez disso, chamar [IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES] para esse esquema. Essa chamada retornará NO se a política impedir que a URL seja aberta. Se ele retornar true, o aplicativo poderá chamar canOpenURL() com uma identidade vazia para determinar se a url pode ser aberta. Por exemplo:

    BOOL __block canOpen = NO;
    if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES])
    {
        [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{
        canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp];
        }];
    }
    
  6. Se o aplicativo ainda não usar o FaceID, verifique se a chave NSFaceIDUsageDescription Info.plist está configurada com uma mensagem padrão. Essa etapa é necessária para que o iOS possa informar ao usuário como o aplicativo pretende usar o FaceID. Uma Intune configuração de política de proteção de aplicativo permite que o FaceID seja usado como um método para acesso ao aplicativo quando configurado pelo administrador de TI.

  7. Use a ferramenta IntuneMAMConfigurator incluída no repositório SDK para concluir a configuração do Info.plist do aplicativo. A ferramenta tem três parâmetros:

    Propriedade Como usar
    -Eu <Path to the input plist>
    - e <Path to the entitlements file>
    - o (Opcional) <Path to the output plist>

    Se o parâmetro '-o' não for especificado, o arquivo de entrada será modificado no local. A ferramenta é idempotente e deve ser executada novamente sempre que forem feitas alterações no Info.plist ou nos direitos do aplicativo. Você também deve baixar e executar a versão mais recente da ferramenta ao atualizar o SDK Intune, caso os requisitos de configuração do Info.plist tenham sido alterados na versão mais recente.

Configurações de build do Xcode

O aplicativo deve ter "Strip Swift Symbols"(STRIP_SWIFT_SYMBOLS) e "Enable Bitcode"(ENABLE_BITCODE) definidos como NO.

Integrando uma extensão do Provedor de Arquivos Não Replicado

Seu aplicativo está usando um provedor de arquivos não replicado se implementar o protocolo NSFileProviderExtension. Todos os provedores de arquivos criados antes do iOS 16.0 não são replicados.

In - startProvidingItemAtURL:completionHandler: marcar se você deve criptografar arquivos usando [[Instância intuneMAMPolicy], deveFileProviderEncryptFiles]]]. Use encryptFile:forAccountId: API no IntuneMAMFileProtectionManager para criptografia de arquivo real. Além disso, compartilhe uma cópia do arquivo quando a criptografia for necessária, pois você não gostaria de armazenar uma cópia criptografada do arquivo no armazenamento em nuvem.

In - importDocumentAtURL:toParentItemIdentifier:completionHandler: marcar se o arquivo é criptografado usando isFileEncrytped: API no IntuneMAMFileProtectionManager. Se ele for descriptografado usando decryptFile:toCopyPath: API do IntuneMAMFileProtectionManager. Em aplicativos de várias identidades, também marcar em relação ao canReceiveSharedFile: API no IntuneMAMPolicy do proprietário de destino para ver se o proprietário pode receber o arquivo.

Integrando uma extensão do Provedor de Arquivos Replicado

Seu aplicativo está usando um Provedor de Arquivos Replicado se implementar o protocolo NSFileProviderReplicatedExtension (adicionado no iOS 16.0).

In - fetchContentsForItemWithIdentifier:version:request:completionHandler: marcar se você deve criptografar arquivos usando [[Instância intuneMAMPolicy], deveFileProviderEncryptFiles]]. Use encryptFile:forAccountId: API no IntuneMAMFileProtectionManager para criptografia de arquivo real. Além disso, compartilhe uma cópia do arquivo quando a criptografia for necessária, pois você não gostaria de armazenar uma cópia criptografada do arquivo no armazenamento em nuvem.

In - createItemBasedOnTemplate:fields:contents:options:request:completionHandler: marcar se o arquivo é criptografado usando isFileEncrypted: API no IntuneMAMFileProtectionManager. Se ele for descriptografado usando decryptFile:toCopyPath: API do IntuneMAMFileProtectionManager. Em aplicativos de várias identidades, também marcar em relação ao canReceiveSharedFile: API no IntuneMAMPolicy do proprietário de destino para ver se o proprietário pode receber o arquivo.

Em qualquer lugar que o Provedor de Arquivos Replicado cria e passa um NSFileProviderItem para o sistema, chame o protectFileProviderItem:forAccountId do IntuneMAMFileProtectionManager:forAccountId: API com a identidade do proprietário do item. Dependendo de onde o objeto NSFileProviderItem é criado e persistido em sua extensão, talvez seja necessário fazer isso em cada um dos métodos de protocolo NSFileProviderReplicatedExtension.

Configurar configurações para o SDK do aplicativo Intune

Você pode usar o dicionário IntuneMAMSettings no arquivo Info.plist do aplicativo para configurar e configurar o SDK do aplicativo Intune. Se o dicionário IntuneMAMSettings não for visto no arquivo Info.plist, você deverá criá-lo.

No dicionário IntuneMAMSettings, você pode definir as seguintes configurações com suporte para configurar o SDK do aplicativo Intune.

Algumas dessas configurações podem ter sido abordadas em seções anteriores e outras não se aplicam a todos os aplicativos.

Setting Tipo Definição Obrigatório?
ADALClientId Cadeia de caracteres O identificador Microsoft Entra cliente do aplicativo. Necessário para todos os aplicativos.
ADALAuthority Cadeia de caracteres A autoridade de Microsoft Entra do aplicativo em uso. Você deve usar seu próprio ambiente em que Microsoft Entra contas foram configuradas. Para obter mais informações, consulte Opções de configuração de aplicativo. Necessário se o aplicativo for um aplicativo personalizado de linha de negócios criado para uso em uma única organização/Microsoft Entra locatário. Se esse valor estiver ausente, a autoridade de Microsoft Entra comum será usada (que só tem suporte para aplicativos multilocatários).
ADALRedirectUri Cadeia de caracteres O URI de redirecionamento Microsoft Entra do aplicativo. ADALRedirectUri ou ADALRedirectScheme é necessário para todos os aplicativos.
ADALRedirectScheme Cadeia de caracteres O esquema de redirecionamento Microsoft Entra ID do aplicativo. Isso pode ser usado no lugar do ADALRedirectUri se o URI de redirecionamento do aplicativo estiver no formato scheme://bundle_id. ADALRedirectUri ou ADALRedirectScheme é necessário para todos os aplicativos.
ADALLogOverrideDisabled Booliano Especifica se o SDK roteará todos os logs MSAL (incluindo chamadas MSAL do aplicativo, se houver) para seu próprio arquivo de log. Padrão como NO. Defina como SIM se o aplicativo definirá seu próprio retorno de chamada de log MSAL. Opcional.
ADALCacheKeychainGroupOverride Cadeia de caracteres Especifica o grupo keychain a ser usado para o cache MSAL, em vez de "com.microsoft.adalcache". Observe que isso não tem o prefixo de id de aplicativo. Isso será prefixado na cadeia de caracteres fornecida no runtime. Opcional.
AppGroupIdentifiers Matriz de cadeias de caracteres Matriz de grupos de aplicativos da seção direitos do aplicativo com.apple.security.application-groups. Necessário se o aplicativo usar grupos de aplicativos.
ContendoAppBundleId Cadeia de caracteres Especifica a ID do pacote do aplicativo que contém a extensão. Necessário para extensões iOS.
AutoEnrollOnLaunch Booliano Especifica se o aplicativo deve tentar se registrar automaticamente no início se uma identidade gerenciada existente for detectada e ainda não o tiver feito. Padrão como NO.

Observação: se nenhuma identidade gerenciada for encontrada ou nenhum token válido para a identidade estiver disponível no cache MSAL, a tentativa de registro falhará silenciosamente sem solicitar credenciais, a menos que o aplicativo também tenha definido MAMPolicyRequired como SIM.
Opcional. Padrão como não.
MAMPolicyRequired Booliano Especifica se o aplicativo será impedido de iniciar se o aplicativo não tiver uma política de proteção de aplicativo Intune. Padrão como NO.

Notas: os aplicativos não podem ser enviados para o App Store com MAMPolicyRequired definido como SIM. Ao definir MAMPolicyRequired como SIM, AutoEnrollOnLaunch também deve ser definido como SIM.
Opcional. Padrão como não.
MAMPolicyWarnAbsent Booliano Especifica se o aplicativo avisará o usuário durante o lançamento se o aplicativo não tiver uma política de proteção de aplicativo Intune.

Observação: os usuários ainda poderão usar o aplicativo sem política depois de descartar o aviso.
Opcional. Padrão como não.
MultiIdentity Booliano Especifica se o aplicativo está ciente de várias identidades. Opcional. Padrão como não.
SafariViewControllerBlockedOverride Booliano Desabilita os ganchos SafariViewController da Intune para habilitar a auth MSAL por meio de SFSafariViewController, SFAuthSession ou ASWebAuthSession.

Observação: a propriedade do botão de atividade SFSafariViewControllerConfiguration não tem suporte pelo Controlador de Exibição do Safari gerenciado do Intune. Um botão de atividade configurado só será exibido no SafariViewController se o modo de exibição não for gerenciado e o SafariViewControllerBlockedOverride estiver definido como sim.
Opcional. Padrão como não. AVISO: pode resultar em vazamento de dados se usado incorretamente. Habilitar somente se for absolutamente necessário. Para obter mais informações, confira Considerações especiais ao usar o MSAL para autenticação iniciada pelo aplicativo.
SplashIconFile
SplashIconFile~ipad
Cadeia de caracteres Especifica o arquivo de ícone Intune splash (inicialização). Opcional.
SplashDuration Número Tempo mínimo, em segundos, que a tela de inicialização Intune será mostrada no lançamento do aplicativo. O padrão é 1,5. Opcional.
BackgroundColor Cadeia de caracteres Especifica a cor de segundo plano para os componentes da interface do usuário do SDK Intune. Aceita uma cadeia de caracteres RGB hexadecimal na forma de #XXXXXX, em que X pode variar de 0 a 9 ou A-F. O sinal de libra pode ser omitido. Opcional. Padrão para a cor de fundo do sistema, que pode variar entre versões do iOS e de acordo com a configuração do Modo Escuro do iOS.
Foregroundcolor Cadeia de caracteres Especifica a cor do primeiro plano para os componentes da interface do usuário do Intune SDK, como a cor do texto. Aceita uma cadeia de caracteres RGB hexadecimal na forma de #XXXXXX, em que X pode variar de 0 a 9 ou A-F. O sinal de libra pode ser omitido. Opcional. Padrão para a cor do rótulo do sistema, que pode variar entre versões do iOS e de acordo com a configuração do Modo Escuro do iOS.
AccentColor Cadeia de caracteres Especifica a cor do sotaque dos componentes da interface do usuário do Intune SDK, como cor do texto do botão e cor de destaque da caixa PIN. Aceita uma cadeia de caracteres RGB hexadecimal na forma de #XXXXXX, em que X pode variar de 0 a 9 ou A-F. O sinal de libra pode ser omitido. Opcional. Padrão para o sistema azul.
SecondaryBackgroundColor Cadeia de caracteres Especifica a cor de fundo secundária para as telas MTD. Aceita uma cadeia de caracteres RGB hexadecimal na forma de #XXXXXX, em que X pode variar de 0 a 9 ou A-F. O sinal de libra pode ser omitido. Opcional. Padrão para branco.
SecondaryForegroundColor Cadeia de caracteres Especifica a cor do primeiro plano secundário para as telas MTD, como a cor da nota de rodapé. Aceita uma cadeia de caracteres RGB hexadecimal na forma de #XXXXXX, em que X pode variar de 0 a 9 ou A-F. O sinal de libra pode ser omitido. Opcional. O padrão é cinza.
SupportsDarkMode Booliano Especifica se o esquema de cores da interface do usuário do Intune SDK deve observar a configuração do modo escuro do sistema, se nenhum valor explícito tiver sido definido para BackgroundColor/ForegroundColor/AccentColor Opcional. O padrão é sim.
MAMTelemetryDisabled Booliano Especifica se o SDK não enviará nenhum dado de telemetria para o back-end. Opcional. Padrão como não.
MAMTelemetryUsePPE Booliano Especifica se o SDK do MAM enviará dados para o back-end de telemetria do PPE. Use isso ao testar seus aplicativos com Intune política para que os dados de telemetria de teste não se misturem com os dados do cliente. Opcional. Padrão como não.
MaxFileProtectionLevel Cadeia de caracteres Permite que o aplicativo especifique o máximo NSFileProtectionType que pode dar suporte. Esse valor substituirá a política enviada pelo serviço se o nível for maior do que o que o aplicativo pode dar suporte. Valores possíveis: NSFileProtectionComplete, NSFileProtectionCompleteUnlessOpen, , NSFileProtectionCompleteUntilFirstUserAuthentication. NSFileProtectionNone Observe: com o nível de proteção de arquivo mais alto (NSFileProtectionComplete), os arquivos protegidos só podem ser acessados enquanto o dispositivo está desbloqueado. 10 segundos após o dispositivo ser bloqueado, o aplicativo perderá o acesso a arquivos protegidos. Em alguns casos, isso pode causar perda de acesso a componentes internos (como bancos de dados MySQL), levando a um comportamento inesperado. É recomendável que os aplicativos que apresentam elementos de interface do usuário de tela de bloqueio definam esse valor como NSFileProtectionCompleteUntilFirstUserAuthentication. Opcional. O padrão é NSFileProtectionComplete
OpenInActionExtension Booliano Defina como SIM para extensões Abrir em Ação. Para obter mais informações, consulte a seção Compartilhamento de dados por meio da seção UIActivityViewController .
WebViewHandledURLSchemes Matriz de cadeias de caracteres Especifica os esquemas de URL que o WebView do aplicativo manipula. Necessário se o aplicativo usar um WebView que manipula URLs por meio de links e/ou JavaScript.
DocumentBrowserFileCachePath Cadeia de caracteres Se o aplicativo usar o UIDocumentBrowserViewController para navegar por arquivos em vários provedores de arquivos, você poderá definir esse caminho em relação ao diretório inicial na área restrita do aplicativo para que o SDK Intune possa soltar arquivos gerenciados descriptografados nessa pasta. Opcional. Padrão para o /Documents/ diretório.
VerboseLoggingEnabled Booliano Se definido como SIM, Intune fará logon no modo verboso. Opcional. Padrões para NO
FinishLaunchingAtStartup Booliano Se o aplicativo estiver usando [BGTaskScheduler registerForTaskWithIdentifier:] , essa configuração deverá ser definida como SIM. Opcional. Padrões para NO
ValuesToScrubFromLogging Matriz de cadeias de caracteres Especifica valores de Configuração de Aplicativo que devem ser limpos dos logs. Como alternativa, a propriedade valuesToScrubFromLogging na classe IntuneMAMSettings pode receber uma matriz de cadeias de caracteres para o mesmo comportamento. Opcional.

Receber política de proteção de aplicativo

Visão Geral

Para receber Intune política de proteção de aplicativo, os aplicativos devem iniciar uma solicitação de registro com o serviço MAM Intune. Os aplicativos podem ser configurados no centro de administração Intune para receber a política de proteção de aplicativo com ou sem registro de dispositivo. O MAM (Gerenciamento de Aplicativos Móveis) permite que os aplicativos sejam gerenciados por Intune sem a necessidade de o dispositivo ser registrado no MDM (gerenciamento de dispositivo móvel) Intune. Em ambos os casos, o registro com o serviço MAM Intune é necessário para receber a política.

Importante

O SDK do aplicativo Intune para iOS usa chaves de criptografia de 256 bits quando a criptografia é habilitada pelas Políticas de Proteção de Aplicativo. Todos os aplicativos precisarão ter uma versão atual do SDK para permitir o compartilhamento de dados protegido.

Aplicativos que já usam ADAL ou MSAL

Observação

Azure AD ADAL (Biblioteca de Autenticação) e Azure AD API do Graph serão preteridos. Para obter mais informações, consulte Atualizar seus aplicativos para usar a Biblioteca de Autenticação da Microsoft (MSAL) e a API do Microsoft Graph .

Os aplicativos que já usam o MSAL devem chamar o registerAndEnrollAccountId método na IntuneMAMEnrollmentManager instância depois que o usuário tiver sido autenticado com êxito:

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

(void)registerAndEnrollAccountId:(NSString *_Nonnull)accountId;

No logon bem-sucedido, o MSAL envia de volta o resultado no objeto MSALResult. Use tenantProfile.identifier no MSALResult como o parâmetro accountId da API acima.

Ao chamar o registerAndEnrollAccountId método, o SDK registrará a conta de usuário e tentará registrar o aplicativo em nome dessa conta. Se o registro falhar por qualquer motivo, o SDK repetirá automaticamente o registro 24 horas depois. Para fins de depuração, o aplicativo pode receber notificações, por meio de um delegado, sobre os resultados de quaisquer solicitações de registro.

Depois que essa API for invocada, o aplicativo poderá continuar funcionando normalmente. Se o registro for bem-sucedido, o SDK notificará o usuário de que uma reinicialização de aplicativo é necessária. Nesse momento, o usuário pode reiniciar imediatamente o aplicativo.

[[IntuneMAMEnrollmentManager instance] registerAndEnrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822"];

Aplicativos que não usam ADAL ou MSAL

Os aplicativos que não entrarem no usuário usando a ADAL ou o MSAL ainda podem receber a política de proteção do aplicativo do serviço Intune MAM chamando a API para que o SDK manipule essa autenticação. Os aplicativos devem usar essa técnica quando não autenticaram um usuário com Microsoft Entra ID, mas ainda precisam recuperar a política de proteção do aplicativo para ajudar a proteger os dados. Um exemplo é se outro serviço de autenticação está sendo usado para entrada do aplicativo ou se o aplicativo não dá suporte à entrada. Para fazer isso, o aplicativo pode chamar o loginAndEnrollAccount método na IntuneMAMEnrollmentManager instância:

/**
 *  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;

Ao chamar esse método, o SDK solicitará ao usuário credenciais se nenhum token existente puder ser encontrado. Em seguida, o SDK tentará registrar o aplicativo com o serviço Intune MAM em nome da conta de usuário fornecida. O método pode ser chamado com "zero" como a identidade. Nesse caso, o SDK se registrará com o usuário gerenciado existente no dispositivo (no caso do MDM) ou solicitará ao usuário um nome de usuário se nenhum usuário existente for encontrado.

Se o registro falhar, o aplicativo deverá considerar chamar essa API novamente em um momento futuro, dependendo dos detalhes da falha. O aplicativo pode receber notificações, por meio de um delegado, sobre os resultados de qualquer solicitação de registro.

Depois que essa API for invocada, o aplicativo poderá continuar funcionando normalmente. Se o registro for bem-sucedido, o SDK notificará o usuário de que uma reinicialização de aplicativo é necessária. Depois que o aplicativo é gerenciado, o valor da ID do objeto Entra precisa ser consultado usando enrolledAccountId no IntuneMAMEnrollmentManager. Use isso para todas as APIs do SDK do MAM que o aplicativo usa para essa conta registrada.

Exemplo:

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

Permitir que Intune manipular a autenticação e o registro no início

Se você quiser que o SDK Intune manipule toda a autenticação com a ADAL/MSAL e o registro antes que seu aplicativo termine de iniciar e seu aplicativo sempre exigirá a política de APP, você não precisará usar loginAndEnrollAccount a API. Você pode simplesmente definir as duas configurações abaixo como SIM no dicionário IntuneMAMSettings na lista Info.plist do aplicativo.

Setting Tipo Definição
AutoEnrollOnLaunch Booliano Especifica se o aplicativo deve tentar se registrar automaticamente no início se uma identidade gerenciada existente for detectada e ainda não o tiver feito. Padrão como NO.

Observação: se nenhuma identidade gerenciada for encontrada ou nenhum token válido para a identidade estiver disponível no cache ADAL/MSAL, a tentativa de registro falhará silenciosamente sem solicitar credenciais, a menos que o aplicativo também tenha definido MAMPolicyRequired como SIM.
MAMPolicyRequired Booliano Especifica se o aplicativo será impedido de iniciar se o aplicativo não tiver uma política de proteção de aplicativo Intune. Padrão como NO.

Observação: os aplicativos não podem ser enviados ao App Store com MAMPolicyRequired definido como SIM. Ao definir MAMPolicyRequired como SIM, AutoEnrollOnLaunch também deve ser definido como SIM.

Se você escolher essa opção para seu aplicativo, não precisará lidar com a reinicialização do aplicativo após a inscrição.

Desregister contas de usuário

Antes de um usuário sair de um aplicativo, o aplicativo deve desregistrar o usuário do SDK. Isso garantirá:

  1. As novas tentativas de registro não ocorrerão mais para a conta do usuário.

  2. Proteção de aplicativos política será removida.

  3. Todos os dados corporativos serão excluídos se o aplicativo iniciar um apagamento seletivo (opcional).

Antes de o usuário sair, o aplicativo deve chamar o seguinte método na IntuneMAMEnrollmentManager instância:

/*
 *  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 accountId The object ID of the account to be removed.
 *  @param doWipe  If YES, a selective wipe if the account is un-enrolled
 */
(void)deRegisterAndUnenrollAccountId:(NSString *)accountId withWipe:(BOOL)doWipe;

Esse método deve ser chamado antes que os tokens de Microsoft Entra da conta de usuário sejam excluídos. O SDK precisa dos tokens de Microsoft Entra da conta de usuário para fazer solicitações específicas ao serviço MAM Intune em nome do usuário.

Se o aplicativo excluir os dados corporativos do usuário por conta própria, o doWipe sinalizador poderá ser definido como false. Caso contrário, o aplicativo pode fazer com que o SDK inicie um apagamento seletivo. Isso resulta em uma chamada para o delegado de apagamento seletivo do aplicativo.

Exemplo:

[[IntuneMAMEnrollmentManager instance] deRegisterAndUnenrollAccountId:@"3ec2c00f-b125-4519-acf0-302ac3761822" withWipe:YES];

Notificações de status, resultado e depuração

O aplicativo pode receber notificações de status, resultado e depuração sobre as seguintes solicitações para o serviço MAM Intune:

  • Solicitações de registro
  • Solicitações de atualização de política
  • Solicitações de cancelamento

As notificações são apresentadas por meio de métodos delegados em 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;

Esses métodos delegados retornam um IntuneMAMEnrollmentStatus objeto que tem as seguintes informações:

  • A accountId (ID do objeto) da conta associada à solicitação
  • A identidade (UPN) da conta associada à solicitação
  • Um código status que indica o resultado da solicitação
  • Uma cadeia de caracteres de erro com uma descrição do código status
  • Um NSError objeto. Esse objeto é definido em IntuneMAMEnrollmentStatus.h, juntamente com os códigos de status específicos que podem ser retornados.

Código de exemplo

Veja a seguir as implementações de exemplo dos métodos delegados:

- (void)enrollmentRequestWithStatus:(IntuneMAMEnrollmentStatus*)status
{
    NSLog(@"enrollment result for identity %@ with status code %ld", status.accountId, (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.accountId, (unsigned long)status.statusCode);
    NSLog(@"Debug Message: %@", status.errorString);
}

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

Reinicialização do aplicativo

Quando um aplicativo recebe políticas de MAM pela primeira vez, ele deve reiniciar para aplicar os ganchos necessários. Para notificar o aplicativo de que uma reinicialização precisa acontecer, o SDK fornece um método delegado no IntuneMAMPolicyDelegate.h.

 - (BOOL) restartApplication

O valor retornado desse método informa ao SDK se o aplicativo precisar lidar com a reinicialização necessária:

  • Se true for retornado, o aplicativo deverá lidar com a reinicialização.

  • Se false for retornado, o SDK reiniciará o aplicativo após o retorno desse método. O SDK mostra imediatamente uma caixa de diálogo que informa ao usuário para reiniciar o aplicativo.

Critérios de saída

Depois de configurar o plug-in de build ou integrar a ferramenta de linha de comando ao processo de build, valide se ele está sendo executado com êxito:

  • Verifique se o build compila e compila com êxito.
  • Inicie seu aplicativo compilado, faça logon com um usuário Microsoft Entra que não seja direcionado à Política de Proteção de Aplicativo e confirme se o aplicativo funciona conforme o esperado.
  • Faça logon e repita este teste com um usuário Microsoft Entra que é direcionado à Política de Proteção de Aplicativo e confirme se o aplicativo agora é gerenciado por Intune e reiniciado.

Neste ponto da integração, seu aplicativo agora pode receber e impor a Política de Proteção de Aplicativo. Execute os testes a seguir para validar a integração.

Primeiro teste de aplicativo de política

Execute o teste a seguir primeiro para se familiarizar com a experiência completa do usuário final do aplicativo de política em seu aplicativo:

  1. Create uma Política de Proteção de Aplicativo do iOS no centro de administração Microsoft Intune. Para este teste, configure a política:
    • Em Requisitos de Acesso, deixe as configurações padrão. Notavelmente, "PIN for Access" deve ser "Obrigatório".
  2. Verifique se a Política de Proteção de Aplicativo está direcionada ao seu aplicativo. Talvez seja necessário adicionar manualmente a ID do pacote do aplicativo no assistente de criação de política.
  3. Atribua a Política de Proteção de Aplicativo a um grupo de usuários que contém sua conta de teste.
  4. Instale seu aplicativo.
  5. Faça logon no aplicativo com sua conta de teste direcionada à Política de Proteção de Aplicativo.
  6. Confirme se você foi solicitado com uma tela gerenciada Intune e confirmando que o prompt reinicia o aplicativo. Essa tela indica que o SDK recupera com êxito a política dessa conta.
  7. Create um PIN quando você for solicitado a definir um PIN de aplicativo.
  8. Registre a conta gerenciada fora do aplicativo.
  9. Navegue pelo aplicativo e confirme se o aplicativo funciona conforme o esperado, se possível, sem fazer logon.

Esta lista de etapas é um teste *bare minimum- para confirmar que seu aplicativo registra corretamente a conta, registra o retorno de chamada de autenticação e cancela o registro da conta. Execute os testes a seguir para validar mais detalhadamente como outras configurações da Política de Proteção de Aplicativo modificam o comportamento do seu aplicativo.

Próximas etapas

Depois de concluir todos os Critérios de Saída, continue para o Estágio 4: recursos de participação do aplicativo.