Compartilhar via


Fase 3: Integração do SDK do Intune na sua aplicação iOS

Observação

Este guia está dividido em várias fases distintas. Comece por rever Planear a Integração.

Objetivos de Fase

  • Transfira o SDK da Aplicação Intune.
  • Saiba que ficheiros estão incluídos no SDK da Aplicação Intune.
  • Referenciar o SDK da Aplicação do Intune na sua aplicação.
  • Confirme que o SDK da Aplicação intune está devidamente incluído na sua criação.
  • Registar novas contas para a gestão de MAM após a autenticação com a MSAL.
  • Para remover dados empresariais, anule o registo de contas ao terminar sessão
  • (Recomendado) Incorpore o registo de MAM na sua aplicação.

Pré-requisitos

  • Precisa de um computador macOS, que tenha o Xcode 14.0 ou posterior instalado.

  • A sua aplicação tem de ser direcionada para o iOS 14.0 ou superior.

  • Reveja os Termos de Licenciamento do SDK da Aplicação Intune para iOS. Imprima e retenha uma cópia dos termos de licenciamento dos seus registos. Ao transferir e utilizar o SDK da Aplicação Intune para iOS, concorda com esses termos de licenciamento. Se não os aceitar, não utilize o software.

  • Transfira os ficheiros para o SDK da Aplicação Intune para iOS no GitHub.

O que está no Repositório do SDK

  • IntuneMAMSwift.xcframework: a arquitetura dinâmica do SDK da Aplicação Intune. Recomenda-se que associe esta arquitetura às suas aplicações/extensões para ativar a gestão de aplicações cliente do Intune. No entanto, alguns programadores podem preferir os benefícios de desempenho da arquitetura estática (IntuneMAMStatic.xcframework). Confira a seguir.

  • IntuneMAMStatic.xcframework: a arquitetura estática do SDK da Aplicação Intune. Os programadores podem optar por ligar a arquitetura estática em vez da estrutura dinâmica. Uma vez que o código executável de uma arquitetura estática está incorporado diretamente no binário da aplicação/extensão no momento da compilação, existem alguns benefícios de desempenho no tempo de lançamento para utilizar a biblioteca estática. No entanto, se a sua aplicação incluir extensões, ligar a arquitetura estática à aplicação e as extensões resultará num tamanho de pacote de aplicação maior, uma vez que o código executável é incorporado em cada binário de aplicação/extensão. Por outro lado, ao utilizar a arquitetura dinâmica, as aplicações e as extensões podem partilhar o mesmo binário do SDK do Intune, o que resulta num tamanho de aplicação mais pequeno.

  • IntuneMAMSwiftStub.xcframework: a arquitetura Swift Stub do SDK da Aplicação Intune. Esta arquitetura é uma dependência necessária do IntuneMAMSwift.xcframework e do IntuneMAMStatic.xcframework que as aplicações/extensões têm de ligar.

  • IntuneMAMConfigurator: uma ferramenta utilizada para configurar o info.plist da aplicação ou extensão com as alterações mínimas necessárias para a gestão do Intune. Consoante a funcionalidade da sua aplicação ou extensão, poderá ter de fazer mais alterações manuais ao ficheiro Info.plist.

  • libIntuneMAMSwift.xcframework: a biblioteca estática do SDK da Aplicação Intune. Esta variante do SDK MAM iOS do Intune foi preterida e será removida numa atualização futura. Recomenda-se que não ligue a biblioteca estática e, em vez disso, ligue a sua aplicação/extensões à arquitetura dinâmica (IntuneMAMSwift.xcframework) ou à arquitetura estática (IntuneMAMStatic.xcframework) mencionada anteriormente.

  • IntuneMAMResources.bundle: um pacote de recursos que contém recursos nos quais o SDK depende. O pacote de recursos só é necessário para aplicações que integram a biblioteca estática preterida (libIntuneMAMSwift.xcframework) e será removido numa atualização futura.

Como funciona o SDK da Aplicação Intune

O objetivo do SDK da Aplicação Intune para iOS é adicionar capacidades de gestão a aplicações iOS com alterações mínimas de código. Quanto menos o código mudar, menos tempo há para comercializar, mas sem afetar a consistência e a estabilidade da sua aplicação móvel.

Fluxo de processo

O diagrama seguinte fornece o fluxo do processo do SDK da Aplicação Intune para iOS:

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

Criar o SDK na sua aplicação móvel

Importante

O Intune lança regularmente atualizações para o SDK da Aplicação Intune. Verifique regularmente o SDK da Aplicação Intune para iOS para obter atualizações e incorpore no ciclo de lançamento de desenvolvimento de software para garantir que as suas aplicações suportam as definições mais recentes da Política de Proteção de Aplicações.

Para ativar o SDK da Aplicação Intune, siga estes passos:

  1. Ligar ou IntuneMAMSwift.xcframeworkIntuneMAMStatic.xcframework ao destino: arraste o pacote xcframework para a lista Estruturas, Bibliotecas e Conteúdo Incorporado do destino do projeto. Repita estes passos para IntuneMAMSwiftStub.xcframework. Para a sua aplicação principal, selecione "Incorporar & Assinar" na coluna "Incorporar" para ambos os xcframeworks adicionados. Para quaisquer extensões, selecione "Não Incorporar".

    Arquitetura iOS do SDK da Aplicação Intune: Xcode Frameworks, Bibliotecas e Exemplo de Conteúdo Incorporado

  2. Adicione estas arquiteturas 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. Ative a partilha de keychain (se ainda não estiver ativada) ao selecionar Capacidades em cada destino do projeto e ativar o comutador Partilha de Keychain . A partilha de porta-chaves é necessária para avançar para o passo seguinte.

    Observação

    O perfil de aprovisionamento tem de suportar novos valores de partilha de keychain. Os grupos de acesso de keychain devem suportar um caráter universal. Pode verificar isto ao abrir o ficheiro .mobileprovision num editor de texto, procurar grupos-acesso-porta-chaves e garantir que tem um caráter universal. Por exemplo:

    <key>keychain-access-groups</key>
    <array>
    <string>YOURBUNDLESEEDID.*</string>
    </array>
    
  4. Depois de ativar a partilha de keychain, siga os passos para criar um grupo de acesso separado no qual o SDK da Aplicação intune irá armazenar os respetivos dados. Pode criar um grupo de acesso de porta-chaves com a IU ou com o ficheiro de elegibilidade. Se estiver a utilizar a IU para criar o grupo de acesso de porta-chaves, siga estes passos:

    1. Se a sua aplicação móvel não tiver grupos de acesso de porta-chaves definidos, adicione o ID do pacote da aplicação como o primeiro grupo.

    2. Adicione o grupo com.microsoft.intune.mam de keychain partilhado aos grupos de acesso existentes. O SDK da Aplicação Intune utiliza este grupo de acesso para armazenar dados.

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

      SDK da Aplicação Intune para iOS: partilha de keychain

    4. Se estiver a editar o ficheiro de elegibilidade diretamente, em vez de utilizar a IU Xcode mostrada acima para criar os grupos de acesso de keychain, prepare os grupos de acesso de porta-chaves com $(AppIdentifierPrefix) (o Xcode processa isto automaticamente). Por exemplo:

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

      Observação

      Um ficheiro de elegibilidade é um ficheiro XML exclusivo da sua aplicação móvel. É utilizado para especificar permissões e capacidades especiais na sua aplicação iOS. Se a sua aplicação não tinha anteriormente um ficheiro de elegibilidade, a ativação da partilha de keychain (passo 3) deverá ter levado o Xcode a gerar um para a sua aplicação. Certifique-se de que o ID do pacote da aplicação é a primeira entrada na lista.

  5. Inclua cada protocolo para o LSApplicationQueriesSchemes qual a sua aplicação passa UIApplication canOpenURL na matriz do ficheiro Info.plist da sua aplicação. Para cada protocolo listado nesta matriz, também tem de ser adicionada uma cópia do protocolo anexado -intunemam à matriz. Além disso, http-intunemam, https-intunemam, microsoft-edge-http-intunemam, microsoft-edge-https-intunemam, smart-ns, zips, lacoonsecurity, wandera, lookoutwork-ase, skycure, , betteractiveshield, smsec, , mvisionmobile, , , scmxe intunemam-mtd devem ser adicionados à matriz. Se a sua aplicação utilizar o protocolo mailto:, ms-outlook-intunemam também deve ser adicionado à matriz. Certifique-se de que guarda as alterações antes de avançar para o passo seguinte.

    Se a aplicação ficar sem espaço na lista LSApplicationQueriesSchemes, pode remover os esquemas "-intunemam" para aplicações que também são conhecidas por implementar o SDK de MAM do Intune. Quando a aplicação remove "scheme-intunemam" da lista LSApplicationQueriesSchemes, canOpenURL() pode devolver respostas incorretas para esses esquemas. Para corrigir este problema, a aplicação deve, em vez disso, pedir [IntuneMAMPolicy isURLAllowed:url isKnownManagedAppScheme:YES] esse esquema. Esta chamada devolve NO se a política bloquear a abertura do URL. Se devolver true, a aplicação pode chamar canOpenURL() com uma identidade vazia para determinar se o URL pode ser aberto. Por exemplo:

    BOOL __block canOpen = NO;
    if([policy isURLAllowed:urlForKnownManagedApp isKnownManagedAppScheme:YES])
    {
        [[IntuneMAMPolicyManager instance] setCurrentThreadAccountId:"" forScope:^{
        canOpen = [[UIApplication sharedApplication] canOpenURL:urlForKnownManagedApp];
        }];
    }
    
  6. Se a sua aplicação ainda não utilizar o FaceID, certifique-se de que a chave NSFaceIDUsageDescription Info.plist está configurada com uma mensagem predefinida. Este passo é necessário para que o iOS possa informar o utilizador sobre como a aplicação pretende utilizar o FaceID. Uma definição de política de proteção de aplicações do Intune permite que o FaceID seja utilizado como um método de acesso à aplicação quando configurado pelo administrador de TI.

  7. Utilize a ferramenta IntuneMAMConfigurator incluída no repositório do SDK para concluir a configuração do info.plist da sua aplicação. 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 ficheiro de entrada será modificado no local. A ferramenta é idempotente e deve ser executada novamente sempre que forem efetuadas alterações ao info.plist ou elegibilidade da aplicação. Também deve transferir e executar a versão mais recente da ferramenta ao atualizar o SDK do Intune, caso os requisitos de configuração do Info.plist tenham sido alterados na versão mais recente.

Definições de Criação do Xcode

A aplicação deve ter "Strip Swift Symbols" (STRIP_SWIFT_SYMBOLS) e "Enable Bitcode" (ENABLE_BITCODE) definidos como NÃO.

Integrar uma extensão do Fornecedor de Ficheiros

As extensões do Fornecedor de Ficheiros têm determinados requisitos de memória que podem dificultar a integração do SDK completo. Para facilitar, existe uma biblioteca libIntuneMAMSwiftFileProvider.xcframework estática que é uma versão despojada do SDK especificamente para extensões do Fornecedor de Ficheiros. Tenha em atenção que se destina à parte não IU da extensão FileProvider. Terá de integrar o SDK completo na extensão de IU do fornecedor de ficheiros.

Para integrar uma destas bibliotecas na extensão do Fornecedor de Ficheiros, siga os passos para integrar o SDK como uma biblioteca estática, conforme mostrado acima. Certifique-se de que inclui ContainingAppBundleId a definição.

Integrar uma extensão de Fornecedor de Ficheiros Não Replicado

A aplicação está a utilizar um Fornecedor de Ficheiros Não Replicado se implementar o protocolo NSFileProviderExtension. Todos os fornecedores de ficheiros criados antes do iOS 16.0 não são replicados.

In - startProvidingItemAtURL:completionHandler: verifique se deve encriptar ficheiros com [[Instância intuneMAMPolicy]shouldFileProviderEncryptFiles]]. Utilize encryptFile:forAccountId: API no IntuneMAMFileProtectionManager para encriptação de ficheiro real. Além disso, partilhe uma cópia do ficheiro quando for necessária encriptação, uma vez que não pretende armazenar uma cópia encriptada do ficheiro no seu armazenamento na cloud.

In - importDocumentAtURL:toParentItemIdentifier:completionHandler: verifique se o ficheiro está encriptado com isFileEncrytped: API in IntuneMAMFileProtectionManager. Se for, desencriptar com decryptFile:toCopyPath: API de IntuneMAMFileProtectionManager. Em aplicações de várias identidades, verifique também a canReceiveSharedFile: API no IntuneMAMPolicy do proprietário de destino para ver se o proprietário pode receber o ficheiro.

Integrar uma extensão do Fornecedor de Ficheiros Replicado

A aplicação está a utilizar um Fornecedor de Ficheiros Replicado se implementar o protocolo NSFileProviderReplicatedExtension (adicionado no iOS 16.0).

In - fetchContentsForItemWithIdentifier:version:request:completionHandler: verifique se deve encriptar ficheiros com [[Instância intuneMAMPolicy]shouldFileProviderEncryptFiles]]. Utilize encryptFile:forAccountId: API no IntuneMAMFileProtectionManager para encriptação de ficheiro real. Além disso, partilhe uma cópia do ficheiro quando for necessária encriptação, uma vez que não pretende armazenar uma cópia encriptada do ficheiro no seu armazenamento na cloud.

In - createItemBasedOnTemplate:fields:contents:options:request:completionHandler: verifique se o ficheiro está encriptado com isFileEncrypted: API in IntuneMAMFileProtectionManager. Se for, desencriptar com decryptFile:toCopyPath: API de IntuneMAMFileProtectionManager. Em aplicações de várias identidades, verifique também a canReceiveSharedFile: API no IntuneMAMPolicy do proprietário de destino para ver se o proprietário pode receber o ficheiro.

Em qualquer lugar que o Fornecedor de Ficheiros Replicado crie e transmita um NSFileProviderItem para o sistema, chame a API protectFileProviderItem:forAccountId do IntuneMAMFileProtectionManager. Dependendo de onde o objeto NSFileProviderItem é criado e mantido na extensão, poderá ter de o fazer em cada um dos métodos de protocolo NSFileProviderReplicatedExtension.

Configurar definições para o SDK da Aplicação Intune

Pode utilizar o dicionário IntuneMAMSettings no ficheiro Info.plist da aplicação para configurar o SDK da Aplicação intune. Se o dicionário IntuneMAMSettings não for visto no ficheiro Info.plist, deve criá-lo.

No dicionário IntuneMAMSettings, pode definir as seguintes definições suportadas para configurar o SDK da Aplicação intune.

Algumas destas definições podem ter sido abordadas em secções anteriores e algumas não se aplicam a todas as aplicações.

Setting Tipo Definição Obrigatório?
ADALClientId Cadeia de caracteres O identificador de cliente do Microsoft Entra da aplicação. Necessário para todas as aplicações.
ADALAuthority Cadeia de caracteres A autoridade do Microsoft Entra da aplicação está a ser utilizada. Deve utilizar o seu próprio ambiente onde as contas do Microsoft Entra foram configuradas. Para obter mais informações, veja Opções de configuração da aplicação. Necessário se a aplicação for uma aplicação de linha de negócio personalizada criada para utilização numa única organização/inquilino do Microsoft Entra. Se este valor estiver ausente, é utilizada a autoridade comum do Microsoft Entra (que só é suportada para aplicações multi-inquilino).
ADALRedirectUri Cadeia de caracteres O URI de redirecionamento da Microsoft Entra da aplicação. ADALRedirectUri ou ADALRedirectScheme são necessárias para todas as aplicações.
ADALRedirectScheme Cadeia de caracteres O esquema de redirecionamento do Microsoft Entra ID da aplicação. Isto pode ser utilizado em vez de ADALRedirectUri se o URI de redirecionamento da aplicação estiver no formato scheme://bundle_id. ADALRedirectUri ou ADALRedirectScheme são necessárias para todas as aplicações.
ADALLogOverrideDisabled Booliano Especifica se o SDK encaminhará todos os registos MSAL (incluindo chamadas MSAL da aplicação, se existirem) para o seu próprio ficheiro de registo. A predefinição é NÃO. Defina como SIM se a aplicação definir a sua própria chamada de retorno de registo MSAL. Opcional.
ADALCacheKeychainGroupOverride Cadeia de caracteres Especifica o grupo de keychain a utilizar para a cache MSAL, em vez de "com.microsoft.adalcache". Tenha em atenção que este não tem o prefixo app-id. Será o prefixo da cadeia fornecida no runtime. Opcional.
AppGroupIdentifiers Matriz de cadeias de caracteres Matriz de grupos de aplicações da secção entitlements com.apple.security.application-groups da aplicação. Necessário se a aplicação utilizar grupos de aplicações.
ContainingAppBundleId Cadeia de caracteres Especifica o ID do pacote da aplicação que contém a extensão. Necessário para extensões iOS.
AutoEnrollOnLaunch Booliano Especifica se a aplicação deve tentar inscrever-se automaticamente no início se for detetada uma identidade gerida existente e ainda não o tiver feito. A predefinição é NÃO.

Notas: se não for encontrada nenhuma identidade gerida ou se não estiver disponível nenhum token válido para a identidade na cache MSAL, a tentativa de inscrição falhará silenciosamente sem pedir credenciais, a menos que a aplicação também tenha definido MAMPolicyRequired como SIM.
Opcional. A predefinição é não.
MAMPolicyRequired Booliano Especifica se a aplicação será impedida de iniciar se a aplicação não tiver uma política de proteção de aplicações do Intune. A predefinição é NÃO.

Notas: as aplicações não podem ser submetidas para a App Store com MAMPolicyRequired definido como SIM. Ao definir MAMPolicyRequired como SIM, AutoEnrollOnLaunch também deve ser definido como SIM.
Opcional. A predefinição é não.
MAMPolicyWarnAbsent Booliano Especifica se a aplicação irá avisar o utilizador durante a iniciação se a aplicação não tiver uma política de proteção de aplicações do Intune.

Nota: os utilizadores continuarão a poder utilizar a aplicação sem política depois de dispensarem o aviso.
Opcional. A predefinição é não.
MultiIdentity Booliano Especifica se a aplicação tem conhecimento de várias identidades. Opcional. A predefinição é não.
SafariViewControllerBlockedOverride Booliano Desativa os hooks SafariViewController do Intune para ativar a autenticação MSAL através de SFSafariViewController, SFAuthSession ou ASWebAuthSession.

Nota: a propriedade do botão de atividade SFSafariViewControllerConfiguration não é suportada pelo Controlador de Vista safari gerido do Intune. Um botão de atividade configurado só será apresentado no SafariViewController se a vista não for gerida e o SafariViewControllerBlockedOverride estiver definido como sim.
Opcional. A predefinição é não. AVISO: pode resultar em fuga de dados se for utilizada incorretamente. Ative apenas se for absolutamente necessário. Para obter mais informações, veja Considerações especiais ao utilizar o MSAL para autenticação iniciada pela aplicação.
SplashIconFile
SplashIconFile~ipad
Cadeia de caracteres Especifica o ficheiro de ícone inicial do Intune (arranque). Opcional.
SplashDuration Número Quantidade mínima de tempo, em segundos, que o ecrã de arranque do Intune será apresentado no início da aplicação. A predefinição é 1,5. Opcional.
BackgroundColor Cadeia de caracteres Especifica a cor de fundo dos componentes de IU do SDK do Intune. Aceita uma cadeia de RGB hexadecimal sob a forma de #XXXXXX, em que X pode variar entre 0 e 9 ou A-F. O sinal de cardinal pode ser omitido. Opcional. A predefinição é a cor de fundo do sistema, que pode variar entre versões do iOS e de acordo com a definição Modo Escuro do iOS.
Primeiro PlanoColor Cadeia de caracteres Especifica a cor de primeiro plano para os componentes de IU do SDK do Intune, como a cor do texto. Aceita uma cadeia de RGB hexadecimal sob a forma de #XXXXXX, em que X pode variar entre 0 e 9 ou A-F. O sinal de cardinal pode ser omitido. Opcional. A predefinição é a cor da etiqueta do sistema, que pode variar entre versões do iOS e de acordo com a definição Modo Escuro do iOS.
CorDoCenter Cadeia de caracteres Especifica a cor de destaque para os componentes de IU do SDK do Intune, como a cor do texto do botão e a cor de realce da caixa pin. Aceita uma cadeia de RGB hexadecimal sob a forma de #XXXXXX, em que X pode variar entre 0 e 9 ou A-F. O sinal de cardinal pode ser omitido. Opcional. A predefinição é azul do sistema.
SecondaryBackgroundColor Cadeia de caracteres Especifica a cor de fundo secundária para os ecrãs MTD. Aceita uma cadeia de RGB hexadecimal sob a forma de #XXXXXX, em que X pode variar entre 0 e 9 ou A-F. O sinal de cardinal pode ser omitido. Opcional. A predefinição é branco.
SecondaryForegroundColor Cadeia de caracteres Especifica a cor de primeiro plano secundária para os ecrãs MTD, como a cor da nota de rodapé. Aceita uma cadeia de RGB hexadecimal sob a forma de #XXXXXX, em que X pode variar entre 0 e 9 ou A-F. O sinal de cardinal pode ser omitido. Opcional. A predefinição é cinzento.
SupportsDarkMode Booliano Especifica se o esquema de cores da IU do SDK do Intune deve observar a definição do modo escuro do sistema, se não tiver sido definido nenhum valor explícito para BackgroundColor/ForegroundColor/AccentColor Opcional. A predefinição é sim.
MAMTelemetryDisabled Booliano Especifica se o SDK não envia dados telemétricos para o back-end. Opcional. A predefinição é não.
MAMTelemetryUsePPE Booliano Especifica se o SDK MAM enviará dados para o back-end de telemetria do PPE. Utilize esta opção ao testar as suas aplicações com a política do Intune para que os dados telemétricos de teste não se misturem com os dados do cliente. Opcional. A predefinição é não.
MaxFileProtectionLevel Cadeia de caracteres Permite que a aplicação especifique o máximo NSFileProtectionType que pode suportar. Este valor substituirá a política enviada pelo serviço se o nível for superior ao que a aplicação pode suportar. Valores possíveis: NSFileProtectionComplete, , NSFileProtectionCompleteUnlessOpenNSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone. Aviso: com o nível de proteção de ficheiros mais elevado (NSFileProtectionComplete), os ficheiros protegidos só podem ser acedidos enquanto o dispositivo estiver desbloqueado. 10 segundos após o dispositivo ser bloqueado, a aplicação perderá o acesso a ficheiros protegidos. Em alguns casos, isto pode causar perda de acesso a componentes internos (como bases de dados MySQL), o que resulta num comportamento inesperado. Recomenda-se que as aplicações que apresentam elementos da IU do ecrã de bloqueio definam este valor como NSFileProtectionCompleteUntilFirstUserAuthentication. Opcional. O padrão é NSFileProtectionComplete
OpenInActionExtension Booliano Defina como SIM para Abrir em Extensões de ação. Para obter mais informações, veja a secção Sharing Data via UIActivityViewController (Partilhar Dados através de UIActivityViewController ).
WebViewHandledURLSchemes Matriz de cadeias de caracteres Especifica os esquemas de URL que o WebView da sua aplicação processa. Necessário se a sua aplicação utilizar um WebView que processa URLs através de ligações e/ou JavaScript.
DocumentBrowserFileCachePath Cadeia de caracteres Se a sua aplicação utilizar o UIDocumentBrowserViewController para procurar ficheiros em vários fornecedores de ficheiros, pode definir este caminho em relação ao diretório raiz no sandbox da aplicação para que o SDK do Intune possa largar ficheiros geridos desencriptados nessa pasta. Opcional. A predefinição é o /Documents/ diretório .
VerboseLoggingEnabled Booliano Se estiver definido como SIM, o Intune iniciará sessão no modo verboso. Opcional. Predefinições para NÃO
FinishLaunchingAtStartup Booliano Se a aplicação estiver a utilizar [BGTaskScheduler registerForTaskWithIdentifier:] , esta definição deve ser definida como SIM. Opcional. Predefinições para NÃO
ValuesToScrubFromLogging Matriz de cadeias de caracteres Especifica os valores da Configuração da Aplicação que devem ser limpos dos registos. Em alternativa, a propriedade valuesToScrubFromLogging na classe IntuneMAMSettings pode receber uma matriz de cadeias para o mesmo comportamento. Opcional.

Receber política de proteção de aplicações

Visão Geral

Para receber a política de proteção de aplicações do Intune, as aplicações têm de iniciar um pedido de inscrição com o serviço MAM do Intune. As aplicações podem ser configuradas no centro de administração do Intune para receber a política de proteção de aplicações com ou sem inscrição de dispositivos. A Gestão de Aplicações Móveis (MAM) permite que as aplicações sejam geridas pelo Intune sem a necessidade de o dispositivo ser inscrito na gestão de dispositivos móveis (MDM) do Intune. Em ambos os casos, a inscrição no serviço MAM do Intune é necessária para receber a política.

Importante

O SDK da Aplicação Intune para iOS utiliza chaves de encriptação de 256 bits quando a encriptação é ativada pelas Políticas de Proteção de Aplicações. Todas as aplicações terão de ter uma versão atual do SDK para permitir a partilha de dados protegidos.

Aplicações que já utilizam a ADAL ou MSAL

Observação

A Biblioteca de Autenticação do Azure AD (ADAL) e a Graph API do Azure AD serão preteridas. 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 .

As aplicações que já utilizam a MSAL devem chamar o registerAndEnrollAccountId método na IntuneMAMEnrollmentManager instância depois de o utilizador ter 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;

Ao iniciar sessão com êxito, a MSAL envia de volta o resultado no objeto MSALResult. Utilize tenantProfile.identifier no MSALResult como o parâmetro accountId para a API acima.

Ao chamar o registerAndEnrollAccountId método , o SDK registará a conta de utilizador e tentará inscrever a aplicação em nome desta conta. Se a inscrição falhar por algum motivo, o SDK repetirá automaticamente a inscrição 24 horas depois. Para fins de depuração, a aplicação pode receber notificações, através de um delegado, sobre os resultados de quaisquer pedidos de inscrição.

Depois de esta API ter sido invocada, a aplicação pode continuar a funcionar normalmente. Se a inscrição for bem-sucedida, o SDK notificará o utilizador de que é necessário reiniciar uma aplicação. Nessa altura, o utilizador pode reiniciar imediatamente a aplicação.

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

Aplicações que não utilizam a ADAL ou a MSAL

As aplicações que não iniciam sessão no utilizador com a ADAL ou a MSAL ainda podem receber a política de proteção de aplicações do serviço MAM do Intune ao chamar a API para que o SDK processe essa autenticação. As aplicações devem utilizar esta técnica quando não autenticaram um utilizador com o Microsoft Entra ID, mas ainda precisam de obter a política de proteção de aplicações para ajudar a proteger os dados. Um exemplo é se outro serviço de autenticação estiver a ser utilizado para o início de sessão da aplicação ou se a aplicação não suportar o início de sessão. Para tal, a aplicação 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 este método, o SDK pedirá ao utilizador as credenciais se não for possível encontrar um token existente. Em seguida, o SDK tentará inscrever a aplicação no serviço MAM do Intune em nome da conta de utilizador fornecida. O método pode ser chamado com "nil" como a identidade. Nesse caso, o SDK será inscrito com o utilizador gerido existente no dispositivo (no caso da MDM) ou pedirá ao utilizador um nome de utilizador se não for encontrado nenhum utilizador existente.

Se a inscrição falhar, a aplicação deverá considerar chamar esta API novamente num momento futuro, dependendo dos detalhes da falha. A aplicação pode receber notificações, através de um delegado, sobre os resultados de quaisquer pedidos de inscrição.

Depois de esta API ter sido invocada, a aplicação pode continuar a funcionar normalmente. Se a inscrição for bem-sucedida, o SDK notificará o utilizador de que é necessário reiniciar uma aplicação. Assim que a aplicação for gerida, o valor do ID do objeto Entra tem de ser consultado com enrolledAccountId no IntuneMAMEnrollmentManager. Utilize esta opção para todas as APIs do SDK de MAM que a aplicação utiliza para esta conta inscrita.

Exemplo:

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

Permitir que o Intune processe a autenticação e a inscrição no lançamento

Se quiser que o SDK do Intune processe toda a autenticação com a ADAL/MSAL e a inscrição antes de a aplicação terminar de ser iniciada e a sua aplicação exigir sempre a política de APLICAÇÕES, não tem de utilizar loginAndEnrollAccount a API. Pode simplesmente definir as duas definições abaixo como SIM no dicionário IntuneMAMSettings no ficheiro Info.plist da aplicação.

Setting Tipo Definição
AutoEnrollOnLaunch Booliano Especifica se a aplicação deve tentar inscrever-se automaticamente no início se for detetada uma identidade gerida existente e ainda não o tiver feito. A predefinição é NÃO.

Nota: se não for encontrada nenhuma identidade gerida ou nenhum token válido para a identidade estiver disponível na cache ADAL/MSAL, a tentativa de inscrição falhará silenciosamente sem pedir credenciais, a menos que a aplicação também tenha definido MAMPolicyRequired como SIM.
MAMPolicyRequired Booliano Especifica se a aplicação será impedida de iniciar se a aplicação não tiver uma política de proteção de aplicações do Intune. A predefinição é NÃO.

Nota: as aplicações não podem ser submetidas para a App Store com MAMPolicyRequired definido como SIM. Ao definir MAMPolicyRequired como SIM, AutoEnrollOnLaunch também deve ser definido como SIM.

Se escolher esta opção para a sua aplicação, não terá de processar o reinício da aplicação após a inscrição.

Anular o registo de contas de utilizador

Antes de um utilizador ter sessão iniciada numa aplicação, a aplicação deve anular o registo do utilizador do SDK. Isto irá garantir:

  1. As repetições de inscrição deixarão de ocorrer na conta do utilizador.

  2. A política de proteção de aplicações será removida.

  3. Todos os dados empresariais são eliminados se a aplicação iniciar uma eliminação seletiva (opcional).

Antes de o utilizador ter sessão terminada, a aplicação 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;

Este método tem de ser chamado antes de os tokens do Microsoft Entra da conta de utilizador serem eliminados. O SDK precisa dos tokens do Microsoft Entra da conta de utilizador para fazer pedidos específicos ao serviço MAM do Intune em nome do utilizador.

Se a aplicação eliminar os dados empresariais do utilizador por si só, o doWipe sinalizador pode ser definido como falso. Caso contrário, a aplicação pode fazer com que o SDK inicie uma eliminação seletiva. Isto resulta numa chamada para o delegado de eliminação seletiva da aplicação.

Exemplo:

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

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

A aplicação pode receber notificações de estado, resultado e depuração sobre os seguintes pedidos ao serviço MAM do Intune:

  • Pedidos de inscrição
  • Pedidos de atualização de políticas
  • Pedidos de anulação da inscrição

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

Estes métodos delegados devolvem um IntuneMAMEnrollmentStatus objeto com as seguintes informações:

  • O accountId (ID do Objeto) da conta associada ao pedido
  • A identidade (UPN) da conta associada ao pedido
  • Um código de estado que indica o resultado do pedido
  • Uma cadeia de erros com uma descrição do código de estado
  • Um NSError objeto. Este objeto é definido em IntuneMAMEnrollmentStatus.h, juntamente com os códigos de estado específicos que podem ser devolvidos.

Código de exemplo

Seguem-se 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);
}

Reinício da aplicação

Quando uma aplicação recebe políticas de MAM pela primeira vez, tem de reiniciar para aplicar os hooks necessários. Para notificar a aplicação de que é necessário reiniciar, o SDK fornece um método delegado no IntuneMAMPolicyDelegate.h.

 - (BOOL) restartApplication

O valor devolvido deste método indica ao SDK se a aplicação tem de processar o reinício necessário:

  • Se for devolvido true, a aplicação tem de processar o reinício.

  • Se for devolvido falso, o SDK reiniciará a aplicação após a devolução deste método. O SDK mostra imediatamente uma caixa de diálogo que indica ao utilizador para reiniciar a aplicação.

Critérios de Saída

Depois de configurar o plug-in de compilação ou integrar a ferramenta de linha de comandos no processo de compilação, confirme que está a ser executada com êxito:

  • Certifique-se de que a compilação compila e compila com êxito.
  • Inicie a sua aplicação compilada, inicie sessão com um utilizador do Microsoft Entra que não seja visado pela Política de Proteção de Aplicações e confirme que a aplicação funciona conforme esperado.
  • Termine sessão e repita este teste com um utilizador do Microsoft Entra visado pela Política de Proteção de Aplicações e confirme que a aplicação é agora gerida pelo Intune e reiniciada.

Nesta fase da integração, a sua aplicação pode agora receber e impor a Política de Proteção de Aplicações. Execute os seguintes testes para validar a integração.

Primeiro Teste de Aplicação de Política

Execute primeiro o seguinte teste para se familiarizar com a experiência completa do utilizador final da aplicação de política na sua aplicação:

  1. Crie uma Política de Proteção de Aplicações iOS no centro de administração do Microsoft Intune. Para este teste, configure a política:
    • Em Requisitos de Acesso, deixe as predefinições. Nomeadamente, "PIN para Acesso" deve ser "Exigir".
  2. Certifique-se de que a Política de Proteção de Aplicações está direcionada para a sua aplicação. Poderá ter de adicionar manualmente o ID do pacote da aplicação no assistente de criação de políticas.
  3. Atribua a Política de Proteção de Aplicações a um grupo de utilizadores que contenha a sua conta de teste.
  4. Instale a sua aplicação.
  5. Inicie sessão na sua aplicação com a sua conta de teste direcionada para a Política de Proteção de Aplicações.
  6. Confirme que lhe foi pedido um ecrã gerido pelo Intune e confirme se o pedido reinicia a aplicação. Este ecrã indica que o SDK obtém com êxito a política para esta conta.
  7. Crie um PIN quando lhe for pedido para definir um PIN da aplicação.
  8. Registe a conta gerida na sua aplicação.
  9. Navegue pela sua aplicação e confirme se a aplicação funciona conforme esperado, se possível, sem iniciar sessão.

Esta lista de passos é um teste *mínimo simples para confirmar que a sua aplicação regista corretamente a conta, regista a chamada de retorno de autenticação e anula o registo da conta. Execute os seguintes testes para validar mais detalhadamente a forma como outras definições da Política de Proteção de Aplicações modificam o comportamento da sua aplicação.

Próximas etapas

Depois de concluir todos os Critérios de Saída, avance para a Fase 4: Funcionalidades de participação da aplicação.