Partilhar via


Fase 3: Intune integração do SDK 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.
  • Faça referência ao SDK da Aplicação 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 com o Xcode 16.0 ou posterior.

  • A sua aplicação tem de ser direcionada para o iOS 16.0 ou posterior.

  • 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 do SDK da Aplicação Intune para iOS no GitHub.

O que está no Repositório do SDK

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

  • 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. 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 a mesma Intune binário do SDK, 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 de 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 da Intune SDK MAM para iOS foi preterida e removida numa atualização futura. Recomendamos 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 é necessário apenas para aplicações que integram a biblioteca estática preterida (libIntuneMAMSwift.xcframework) e remove-a 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 de código mínimas. 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 Microsoft Intune.

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

Importante

Intune lança regularmente atualizações para o SDK da Aplicação Intune. Marcar regularmente o SDK da Aplicação Intune para iOS para obter atualizações e incorporar 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".

    Intune SDK da Aplicação iOS Framework: 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 marcar isto ao abrir o ficheiro .mobileprovision num editor de texto, procurar keychain-access-groups 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 armazena 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 iOS: partilha de keychain

      Observação

      Se tiver configurado a MSAL para utilizar um grupo de acesso de porta-chaves personalizado em vez da predefinição do com.microsoft.adalcache, não precisa de especificar este grupo de acesso de keychain aqui. Em vez disso, especifique o grupo de porta-chaves personalizado. Também deve configurar Intune para utilizar o mesmo grupo de acesso personalizado através da definição ADALCacheKeychainGroupOverride no dicionário IntuneMAMSettings Info.plist.

    4. Se estiver a editar diretamente o ficheiro de elegibilidade, em vez de utilizar a IU do Xcode 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, ativar a partilha de keychain (passo 3) deverá ter causado a geração de um ficheiro Xcode 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, adicione uma cópia do protocolo anexado -intunemam à matriz. Além disso, adicione estes valores à matriz: http-intunemam, https-intunemam, microsoft-edge-http-intunemam, microsoft-edge-https-intunemam, smart-ns, zips, lacoonsecurity, , lookoutwork-asewandera, , skycure, betteractiveshield, , smsec, , mvisionmobile, , e scmxintunemam-mtd. Se a sua aplicação utilizar o protocolo mailto:, adicione também ms-outlook-intunemam à matriz. Guarde 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 Intune. Quando a aplicação remove "scheme-intunemam" da lista LSApplicationQueriesSchemes, canOpenURL() pode devolver respostas incorretas para esses esquemas. Para corrigir este problema, em alternativa, chame [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 Intune permite que o FaceID seja utilizado como 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 é modificado no local. A ferramenta é idempotente e deve ser executada novamente sempre que fizer 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 Intune, caso os requisitos de configuração do Info.plist foram alterados na versão mais recente.

Observação

Se tiver uma aplicação SwiftUI, certifique-se de que UISceneConfigurations o UIApplicationSceneManifest dicionário no ficheiro Info.pist não está em falta ou vazio. A não configuração desta definição pode impedir que o SDK Intune proteja a sua aplicação, apesar de as políticas de proteção de aplicações terem sido aplicadas com êxito. Se não tiver um valor específico definido para o UISceneConfigurations , pode utilizar esta configuração predefinida:

<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
</dict>
</array>
</dict>

Definições e Capacidades 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 nas definições de compilação Xcode. Se a sua aplicação incluir a capacidade de "Segurança Avançada" disponível no Xcode 26 e superior, tem de desativar as opções "Autenticar ponteiros" e "Ativar Memória de Plataforma Só de Leitura".

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.xcframeworkestática, que é uma versão despojada do SDK especificamente para extensões do Fornecedor de Ficheiros. Tenha em atenção que esta biblioteca se destina à parte não IU da extensão FileProvider. Tem 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. 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: marcar if you should encrypt files using [[IntuneMAMPolicy instance]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: marcar se o ficheiro é encriptado com isFileEncrytped: API in IntuneMAMFileProtectionManager. Se estiver, desencripte-o com o decryptFile:toCopyPath: API do IntuneMAMFileProtectionManager. Nas aplicações de várias identidades, também marcar em relação ao canReceiveSharedFile: API no IntuneMAMPolicy do proprietário de destino para determinar 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: marcar se deve encriptar ficheiros com [[Instância intuneMAMPolicy]shouldFileProviderEncryptFiles]. Utilize a encriptaçãoFile:forAccountId: API no IntuneMAMFileProtectionManager para encriptação de ficheiro real. Partilhe uma cópia do ficheiro quando a encriptação for necessária, porque não quer armazenar uma cópia encriptada do ficheiro no seu armazenamento na cloud.

In - createItemBasedOnTemplate:fields:contents:options:request:completionHandler: marcar se o ficheiro está encriptado com isFileEncrypted: API in IntuneMAMFileProtectionManager. Se estiver, desencripte-o com o decryptFile:toCopyPath: API do IntuneMAMFileProtectionManager. Nas aplicações de várias identidades, também marcar em relação ao canReceiveSharedFile: API no IntuneMAMPolicy do proprietário de destino para determinar 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.

As secções anteriores abrangem algumas destas definições e outras não se aplicam a todas as aplicações.

Configuração Tipo Definição Obrigatório?
ADALClientId Cadeia de caracteres O identificador de cliente Microsoft Entra da aplicação. Necessário para todas as aplicações.
ADALAuthority Cadeia de caracteres A autoridade de Microsoft Entra da aplicação em utilização. Deve utilizar o seu próprio ambiente onde Microsoft Entra contas estão 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 Microsoft Entra. Se este valor estiver ausente, é utilizada a autoridade de Microsoft Entra comum (apenas suportada para aplicações multi-inquilino).
ADALRedirectUri Cadeia de caracteres O URI de redirecionamento Microsoft Entra da aplicação. ADALRedirectUri ou ADALRedirectScheme são necessárias para todas as aplicações.
ADALRedirectScheme Cadeia de caracteres O Microsoft Entra ID esquema de redirecionamento 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 encaminha 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". O sistema prefixa isto automaticamente no runtime. Opcional.
AppGroupIdentifiers Matriz de cadeias de caracteres Matriz de grupos de aplicações da secção de elegibilidade 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.

Nota: Se não for encontrada nenhuma identidade gerida ou se não estiver disponível nenhum token válido na cache MSAL, a inscrição falha automaticamente, a menos que MAMPolicyRequired seja SIM.
Opcional. A predefinição é NÃO.
MAMPolicyRequired Booliano Especifica se a aplicação está impedida de iniciar se não tiver uma política de proteção de aplicações Intune. A predefinição é NÃO.

Nota: As aplicações não podem ser submetidas para o App Store com esta opção definida como SIM. Ao defini-lo como SIM, AutoEnrollOnLaunch também deve ser SIM.
Opcional. A predefinição é NÃO.
MAMPolicyWarnAbsent Booliano Especifica se a aplicação avisa o utilizador durante a iniciação se não existir nenhuma política de proteção de aplicações Intune.

Nota: Os utilizadores ainda podem continuar depois de dispensarem o aviso.
Opcional. A predefinição é NÃO.
MultiIdentity Booliano Especifica se a aplicação tem conhecimento de várias identidades. Para obter mais informações, veja a documentação de várias identidades. Opcional. A predefinição é NÃO.
MultiIdentityCancelDisabled Booliano Desativa o botão cancelar no Intune ecrãs de IU de início condicional em aplicações de várias identidades. Se não estiver definido como SIM, a aplicação tem de processar o código de IntuneMAMSwitchIdentityResultCanceled falha. Veja Mudar 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: Um botão de atividade configurado só é apresentado se a vista não for gerida e esta estiver definida como SIM.
Opcional. A predefinição é NÃO.

Aviso: Pode causar fugas de dados se forem utilizados incorretamente.
SplashIconFile
SplashIconFile~ipad
Cadeia de caracteres Especifica o ficheiro de ícone de Intune splash (arranque). Opcional.
SplashDuration Número Tempo mínimo em segundos em que o ecrã de arranque do Intune é apresentado. A predefinição é 1,5. Opcional.
BackgroundColor Cadeia de caracteres Especifica a cor de fundo para Intune componentes da IU do SDK. #XXXXXX Aceita ou um valor hexadecim o sinal de libra. Opcional. A predefinição é a cor de fundo do sistema.
Primeiro PlanoColor Cadeia de caracteres Especifica a cor de primeiro plano/texto para os componentes da IU. #XXXXXX Aceita ou hexadecim do sinal de libra. Opcional. A predefinição é a cor da etiqueta do sistema.
CorDoCenter Cadeia de caracteres Especifica a cor de destaque dos componentes da IU (botões, realce da caixa PIN). #XXXXXX Aceita ou hexadecim do sinal de libra. Opcional. A predefinição é azul do sistema.
SecondaryBackgroundColor Cadeia de caracteres Especifica a cor de fundo secundária para ecrãs MTD. #XXXXXX Aceita ou hexadecim do sinal de libra. Opcional. A predefinição é branco.
SecondaryForegroundColor Cadeia de caracteres Especifica a cor de primeiro plano secundária para ecrãs MTD. #XXXXXX Aceita ou hexadecim do sinal de libra. Opcional. A predefinição é cinzento.
SupportsDarkMode Booliano Especifica se as cores da IU seguem o Modo Escuro do sistema quando as cores explícitas não estão definidas. Opcional. A predefinição é SIM.
MAMTelemetryDisabled Booliano Especifica se a telemetria é enviada para o back-end. Opcional. A predefinição é NÃO.
MAMTelemetryUsePPE Booliano Envia telemetria para o back-end do PPE. Útil para testar aplicações para que os dados não se misturem com os dados do cliente. Opcional. A predefinição é NÃO.
MaxFileProtectionLevel Cadeia de caracteres Especifica o máximo NSFileProtectionType que a aplicação suporta. Substitui a política se o serviço enviar um nível mais elevado.

Valores possíveis: NSFileProtectionComplete, , NSFileProtectionCompleteUnlessOpenNSFileProtectionCompleteUntilFirstUserAuthentication, NSFileProtectionNone.

Aviso: Com NSFileProtectionCompleteo , a aplicação perde o acesso a ficheiros protegidos cerca de 10 segundos após o dispositivo bloquear, o que pode quebrar componentes, como bases de dados locais. As aplicações com IU do ecrã de bloqueio devem utilizar NSFileProtectionCompleteUntilFirstUserAuthentication.
Opcional. O padrão é NSFileProtectionComplete
OpenInActionExtension Booliano Defina como SIM para Abrir em Extensões de ação. Veja Partilhar Dados através de UIActivityViewController. Opcional.
TreatAllWebViewsAsUnmanaged Booliano Trata todos os WebViews como não geridos para a imposição de cortar/copiar/colar. Veja Apresentar conteúdo Web. Opcional. A predefinição é NÃO.
WebViewHandledURLSchemes Matriz de cadeias de caracteres Esquemas de URL processados pelo WebView da aplicação. Necessário se o WebView processar ligações ou navegação JavaScript.
DocumentBrowserFileCachePath Cadeia de caracteres Se estiver a utilizar UIDocumentBrowserViewController, defina um caminho (relativo ao diretório raiz da aplicação) para ficheiros geridos desencriptados. Opcional. O padrão é /Documents/
VerboseLoggingEnabled Booliano Ativa o registo verboso. Opcional. A predefinição é NÃO.
FinishLaunchingAtStartup Booliano Necessário ao utilizar [BGTaskScheduler registerForTaskWithIdentifier:]; tem de ser SIM. Opcional. A predefinição é NÃO.
ValuesToScrubFromLogging Matriz de cadeias de caracteres Valores de Configuração da Aplicação que devem ser removidos dos registos. Também pode ser definido através de valuesToScrubFromLogging em IntuneMAMSettings. Opcional.

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

Visão Geral

Para receber Intune política de proteção de aplicações, as aplicações têm de iniciar um pedido de inscrição com o serviço Intune MAM. 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 por Intune sem a necessidade de o dispositivo ser inscrito no Intune gestão de dispositivos móveis (MDM). Em ambos os casos, a inscrição no serviço Intune MAM é 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 precisam 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

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

As aplicações que já utilizam a MSAL devem chamar o registerAndEnrollAccountId método na IntuneMAMEnrollmentManager instância depois de o utilizador ser autenticado com êxito:

/*
 *  This method adds the account to the list of registered accounts.
 *  An enrollment request starts immediately.
 *  @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 da API.

Ao chamar o registerAndEnrollAccountId método , o SDK regista a conta de utilizador e tenta inscrever a aplicação em nome desta conta. Se a inscrição falhar por algum motivo, o SDK repete 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 ser invocada, a aplicação pode continuar a funcionar normalmente. Se a inscrição for bem-sucedida, o SDK notifica 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 Intune MAM 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 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 starts immediately.
 *  If no token can be retrieved for the identity, the user is prompted
 *  to enter their credentials, after which enrollment is 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 pede ao utilizador as credenciais se não for possível encontrar um token existente. Em seguida, o SDK tenta inscrever a aplicação com o serviço Intune MAM em nome da conta de utilizador fornecida. O método pode ser chamado com "nil" como a identidade. Nesse caso, o SDK é inscrito com o utilizador gerido existente no dispositivo (se MDM) ou pede 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 ser invocada, a aplicação pode continuar a funcionar normalmente. Se a inscrição for bem-sucedida, o SDK notifica o utilizador de que é necessário reiniciar uma aplicação. Assim que a aplicação for gerida, o Microsoft Entra valor do ID do objeto 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 Intune processar 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 políticas de proteção de aplicações, não tem de utilizar loginAndEnrollAccount a API. Pode definir as seguintes definições como SIM no dicionário IntuneMAMSettings no ficheiro Info.plist da aplicação.

Configuração 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 falha silenciosamente sem pedir credenciais, a menos que a aplicação também defina MAMPolicyRequiredcomo SIM.
MAMPolicyRequired Booliano Especifica se a aplicação está impedida de iniciar se a aplicação não tiver uma política de proteção de aplicações Intune. A predefinição é NÃO.

Nota: As aplicações não podem ser submetidas para o App Store com MAMPolicyRequired definido como SIM. Ao definir MAMPolicyRequiredcomo 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. Este processo garante:

  1. As repetições de inscrição já não ocorrem na conta do utilizador.

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

  3. 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 removes the provided account from the list of
 *  registered accounts. Once removed, if the account enrolled
 *  the application, the account is un-enrolled.
 *  @note In the case where an un-enroll is required, this method blocks
 *  until the Intune APP AAD token is acquired, then returns. 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 de Microsoft Entra da conta de utilizador serem eliminados. O SDK precisa dos tokens de Microsoft Entra da conta de utilizador para fazer pedidos específicos ao serviço Intune MAM 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. Esta ação 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 status, resultados e depuração sobre os seguintes pedidos ao serviço Intune MAM:

  • 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 status que indica o resultado do pedido
  • Uma cadeia de erros com uma descrição do código de status
  • Um NSError objeto. Este objeto é definido em IntuneMAMEnrollmentStatus.h, juntamente com os códigos de status 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 reinicia 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.

Observação

As aplicações .NET MAUI não necessitam de um reinício.

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 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 Microsoft Entra visado pela Política de Proteção de Aplicações e confirme que a aplicação é agora gerida por 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 é pedido um ecrã gerido 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.