Enlaces Xamarin do SDK da Aplicação Microsoft Intune

Nota

Pode ler primeiro o artigo Introdução ao SDK da Aplicação Intune, que explica como preparar a integração em cada plataforma suportada.

Descrição Geral

Os Enlaces Xamarin do SDK da Aplicação Intune ativam a política de proteção de aplicações do Intune em aplicações iOS e Android criadas com o Xamarin. Os enlacem permitem aos programadores criar facilmente funcionalidades de proteção de aplicações do Intune na respetiva aplicação baseada no Xamarin.

Os Enlaces Xamarin do SDK da Aplicação Microsoft Intune permitem-lhe incorporar as políticas de proteção de aplicações do Intune (também conhecidas como políticas de APLICAÇÕES ou MAM) nas suas aplicações desenvolvidas com o Xamarin. Uma aplicação preparada para MAM é uma integrada com o SDK da Aplicação Intune. Os administradores de TI podem implementar políticas de proteção de aplicações na aplicação móvel quando o Intune está a gerir a aplicação de forma ativa.

O que é suportado?

Máquinas do programador

  • Windows (versão Visual Studio 15.7+)
  • macOS

Plataformas de aplicações móveis

  • Android
  • iOS

Cenários de Gestão de Aplicações Móveis do Intune

  • Intune APP-WE (sem inscrição no dispositivo)
  • Dispositivos inscritos na MDM do Intune
  • Dispositivos inscritos na EMM de terceiros

As aplicações Xamarin criadas com os Enlaces Xamarin do SDK da Aplicação Intune podem agora receber políticas de proteção de aplicações do Intune em dispositivos inscritos na gestão de dispositivos móveis (MDM) do Intune e em dispositivos não inscritos.

Pré-requisitos

Reveja os termos da licença. Imprima e guarde uma cópia dos termos de licenciamento nos seus registos. Ao transferir e utilizar os Enlaces Xamarin do SDK da Aplicação Intune, aceita esses termos de licenciamento. Caso não aceite os termos, não deverá utilizar o software.

O Intune SDK conta com a Microsoft Authentication Library (MSAL) para os seus cenários de autenticação e lançamento condicional, que exigem que as aplicações sejam configuradas com Azure Ative Directory.

Se a sua aplicação já estiver configurada para utilizar o MSAL, e tiver o seu próprio ID de cliente personalizado usado para autenticar com Azure Ative Directory, certifique-se de que os passos para dar as permissões da sua aplicação Xamarin ao serviço Intune Mobile Application Management (MAM) são seguidos. Utilize as instruções na secção " Dar à sua aplicação acesso ao serviço de proteção deaplicações Intune" da secção "começar com o guia Intune SDK"

Considerações de segurança

Para impedir potenciais ataques de spoofing, divulgação de informações e ataques de elevação de privilégios:

  • Certifique-se de que o desenvolvimento da aplicação Xamarin é realizado numa estação de trabalho segura.
  • Certifique-se de que as ligações são de uma fonte válida da Microsoft:
  • Configure o seu NuGet config para que o seu projeto confie em pacotes NuGet assinados e não modificados. Consulte a instalação de pacotes assinados para obter mais informações.
  • Proteja o diretório de saída que contém a aplicação Xamarin. Considere utilizar um diretório de nível de utilizador para a saída.

Ativar as políticas de proteção de aplicações do Intune na sua aplicação móvel iOS

Importante

Intune lança regularmente atualizações para o Intune App SDK. Verifique regularmente as Ligações SDK Xamarin da App Intune para obter atualizações e incorpore o ciclo de lançamento do seu software para garantir que as suas aplicações suportem as definições mais recentes da Política de Proteção de Aplicações.

  1. Adicione o pacote NuGet Microsoft.Intune.MAM.Xamarin.iOS ao seu projeto Xamarin.iOS.

  2. Siga os passos gerais necessários para integrar o SDK da Aplicação Intune numa aplicação móvel iOS. Pode começar com o passo 3 das instruções de integração do Guia para Programadores do SDK da Aplicação Intune para iOS. Pode ignorar o passo final na secção na qual executa o IntuneMAMConfigurator, sendo que esta ferramenta está incluída no pacote Microsoft.Intune.MAM.Xamarin.iOS e será executada automaticamente aquando a compilação. Importante: a ativação da partilha de keychain para uma aplicação é ligeiramente diferente no Visual Studio a partir do Xcode. Abra a plist de Elegibilidade da aplicação e garanta que a opção “Ativar Keychain” está ativada e que são adicionados os grupos de partilha de keychain adequados nessa secção. Em seguida, garanta que a plist de Elegibilidade está especificada no campo “Elegibilidades Personalizadas” das opções “Assinatura de Pacotes iOS” do projeto para todas as combinações de Configuração/Plataforma adequadas.

  3. Após os enlaces serem adicionados e a aplicação estar configurada corretamente, a sua aplicação pode começar a utilizar as APIs do SDK do Intune. Para tal, tem de incluir o seguinte espaço de nomes:

    using Microsoft.Intune.MAM;
    
  4. Para começar a receber políticas de proteção de aplicações, tem de inscrever a aplicação no serviço do Intune MAM. Se a sua aplicação não utilizar a Microsoft Authentication Library (MSAL) para autenticar os utilizadores, e pretender que o Intune SDK manuseie a autenticação, a sua aplicação deverá fornecer o UPN do utilizador ao método loginandenrollAccount do IntuneMAMEnrollManager:

     IntuneMAMEnrollmentManager.Instance.LoginAndEnrollAccount([NullAllowed] string identity);
    

    As aplicações poderão transmitir "nulo" se o UPN do utilizador for desconhecido no momento da chamada. Neste caso, pedir-se-á aos utilizadores para introduzirem o respetivo endereço de e-mail e palavra-passe.

    Se a sua aplicação já utilizar o MSAL para autenticar os utilizadores, pode configurar uma experiência de um único sign-on (SSO) entre a sua aplicação e o Intune SDK. Em primeiro lugar, terá de anular as definições AAD padrão utilizadas pelo Intune SDK com as da sua aplicação. Pode fazê-lo através do dicionário IntuneMAMSettings na lista de Info.plist da aplicação, conforme mencionado no SDK da App Intune para o iOS Developer Guide,ou pode fazê-lo em código através da AAD sobrepõe propriedades da classe IntuneMAMSettings. A abordagem Info.plist é recomendada para aplicações cujas definições DE MSAL são estáticas enquanto as propriedades de substituição são recomendadas para aplicações que determinam esses valores em tempo de execução. Depois de configurar todas as definições do SSO, a sua aplicação deve fornecer o UPN do utilizador ao método RegisterAndEnrollAccount de IntuneMAMEnrollmentManager após a autenticação bem-sucedida:

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    As aplicações podem determinar o resultado de uma tentativa de inscrição ao implementar o método EnrollmentRequestWithStatus numa subclasse de IntuneMAMEnrollmentDelegate e ao definir a propriedade Delegate do IntuneMAMEnrollmentManager para uma instância dessa classe.

    Após uma inscrição bem-sucedida, as aplicações podem determinar o UPN da conta inscrita (se este fosse previamente desconhecido) ao consultar a seguinte propriedade:

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

Aplicações de amostra

Aplicações de amostra que destacam a funcionalidade MAM em aplicações Xamarin.iOS estão disponíveis no GitHub.

Nota

Não existe um remapper para iOS/iPadOS. A integração numa aplicação Xamarin.Forms deve ser igual à de um projeto normal Xamarin.iOS.

Ativar as políticas de proteção de aplicações do Intune na sua aplicação móvel para Android

  1. Adicione o pacote NuGet Microsoft.Intune.MAM.Xamarin.Android ao seu projeto Xamarin.Android.
    1. Para uma aplicação Xamarin.Forms, adicione também o pacote Microsoft.Intune.MAM.Remapper.Tasks NuGet ao seu projeto Xamarin.Android.
  2. Siga os passos gerais necessários para integrar o Intune App SDK numa aplicação móvel Android, referindo-se a este documento para mais detalhes.

Integração do projeto Xamarin.Android

Uma visão geral completa para a integração do Intune App SDK pode ser encontrada no Microsoft Intune App SDK para guia de desenvolvedores Android. Ao ler o guia e integrar o Intune App SDK com a sua aplicação Xamarin, as seguintes secções destinam-se a destacar diferenças entre a implementação de uma aplicação nativa do Android desenvolvida em Java e uma aplicação Xamarin desenvolvida em C#. Estas secções devem ser tratadas como suplementares e não podem servir de substituto para a leitura integral do guia.

Remapper

Começando com o lançamento 1.4428.1, o Microsoft.Intune.MAM.Remapper pacote pode ser adicionado a uma aplicação Xamarin.Android como ferramenta de construção para executar a classe MAM, método e sistemas de substituição de serviços. Se o Remapper estiver incluído, as partes de substituição equivalentes MAM das secções De métodos renomeados e aplicação MAM serão executadas automaticamente quando a aplicação for construída.

Para excluir uma classe de MAM-ification pelo Remapper, o seguinte imóvel pode ser adicionado no seu arquivo de .csproj projetos.

  <PropertyGroup>
    <ExcludeClasses>Semicolon separated list of relative class paths to exclude from MAM-ification</ExcludeClasses>
  </PropertyGroup>

Nota

O Remapper atualmente impede a depurada em aplicações Xamarin.Android. Recomenda-se a integração manual para depurar a sua aplicação.

Métodos renomeados

Em muitos casos, um método disponível na classe Android foi marcado como final na classe de substituição da MAM. Neste caso, a classe de substituição de MAM proporciona um método com um nome semelhante (com o sufixo MAM), que deve ser substituído. Por exemplo, quando executar a derivação de MAMActivity, em vez de substituir OnCreate() e chamar base.OnCreate(), Activity tem de substituir OnMAMCreate() e chamar base.OnMAMCreate().

Aplicação MAM

A sua aplicação deve definir uma Android.App.Application classe. Se integrar manualmente o MAM, deve herdar de MAMApplication . Certifique-se de que aplicou corretamente o atributo [Application] à sua subclasse e que esta substitui o construtor (IntPtr, JniHandleOwnership).

    [Application]
    class TaskrApp : MAMApplication
    {
    public TaskrApp(IntPtr handle, JniHandleOwnership transfer)
        : base(handle, transfer) { }

Nota

Um problema com as ligações MAM Xamarin pode fazer com que a aplicação se despenhe quando implementada no modo Debug. Como solução alternativa, o Debuggable=false atributo deve ser adicionado à classe e a bandeira deve ser retirada do manifesto se tiver sido Application android:debuggable="true" regulada manualmente.

Ativar funcionalidades que requerem a participação da aplicação

Exemplo: determinar se o PIN é necessário para a aplicação

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

Exemplo: determinar o utilizador primário do Intune

IMAMUserInfo info = MAMComponents.Get<IMAMUserInfo>();
return info?.PrimaryUser;

Exemplo: determinar se é permitido guardar no dispositivo ou armazenar na cloud

MAMPolicyManager.GetPolicy(currentActivity).GetIsSaveToLocationAllowed(SaveLocation service, String username);

Registar para obter notificações do SDK

A sua aplicação deve registar-se para notificações do SDK, criando uma MAMNotificationReceiver e registando-a com MAMNotificationReceiverRegistry . Isto é feito fornecendo o recetor e o tipo de notificação desejado em App.OnMAMCreate , como o exemplo abaixo ilustra:

public override void OnMAMCreate()
{
    // Register the notification receivers
    IMAMNotificationReceiverRegistry registry = MAMComponents.Get<IMAMNotificationReceiverRegistry>();
    foreach (MAMNotificationType notification in MAMNotificationType.Values())
    {
        registry.RegisterReceiver(new ToastNotificationReceiver(this), notification);
    }
    ...

Gestor de Inscrições do MAM

IMAMEnrollmentManager mgr = MAMComponents.Get<IMAMEnrollmentManager>();

Integração do componente Xamarin.Forms

Para Xamarin.Forms aplicações, o Microsoft.Intune.MAM.Remapper pacote executa a substituição da classe MAM automaticamente, injetando classes na hierarquia de classes de classes MAM comumente Xamarin.Forms utilizadas.

Nota

A integração Xamarin.Forms deve ser feita para além da integração Xamarin.Android detalhada acima. O Remapper comporta-se de forma diferente para aplicações Xamarin.Forms, pelo que as substituições manuais do MAM ainda devem ser feitas.

Uma vez adicionado o Remapper ao seu projeto, terá de realizar as substituições equivalentes MAM. Por exemplo, FormsAppCompatActivity e pode continuar a ser utilizado na sua aplicação, desde que se FormsApplicationActivity substitua e seja substituído pelos OnCreate OnResume equivalentes MAM OnMAMCreate OnMAMResume e, respectivamente.

    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnMAMCreate(Bundle savedInstanceState)
        {
            base.OnMAMCreate(savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());
        }

Se as substituições não forem efetuadas, poderá encontrar os seguintes erros de compilação até então então estiução das substituições:

  • Erro do compilador CS0239. Este erro é geralmente visto nesta 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed forma. Isto é esperado porque quando o Remapper modifica a herança das classes Xamarin, certas funções serão feitas sealed e uma nova variante de MAM é adicionada para substituir em vez disso.
  • Erro do compilador CS0507: Este erro é geralmente visto neste formulário 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member ... . Quando o Remapper alterar a herança de algumas das classes Xamarin, certas funções dos membros serão alteradas para public . Se anular alguma destas funções, terá de alterar os modificadores de acesso para que esses sobreposições public também sejam.

Nota

O Remapper reescreve uma dependência que Visual Studio utiliza para a conclusão automática do IntelliSense. Por isso, poderá ter de recarregar e reconstruir o projeto quando o Remapper for adicionado para que o IntelliSense reconheça corretamente as alterações.

Resolução de problemas

  • Se encontrar um ecrã branco e em branco na sua aplicação no lançamento, poderá ter de forçar as chamadas de navegação a executar no fio principal.
  • As Ligações Intune SDK Xamarin não suportam aplicações que estejam a utilizar uma estrutura inter-plataforma como o MvvmCross devido a conflitos entre as classes MvvmCross e Intune MAM. Embora alguns clientes possam ter tido sucesso com a integração depois de mover as suas apps para o Xamarin.Forms simples, não fornecemos orientações explícitas ou plugins para desenvolvedores de aplicações que usam MvvmCross.

Aplicação do Portal da Empresa

As Ligações Intune SDK Xamarin contam com a presença da aplicação Portal da Empresa Android no dispositivo para permitir políticas de proteção de aplicações. O Portal da Empresa obtém as políticas de proteção de aplicações do serviço Intune. Quando a aplicação é inicializada, é carregada a política e o código para impor essa política a partir do Portal da Empresa. O utilizador não precisa de ser inscrito.

Nota

Quando a aplicação Portal da Empresa não se encontra no dispositivo Android, uma aplicação gerida pelo Intune comporta-se da mesma forma que uma aplicação normal que não suporta políticas de proteção de aplicações Intune.

Para a proteção de aplicações sem inscrição de dispositivos, o utilizador não é obrigado a inscrever o dispositivo através da aplicação Portal da Empresa.

Aplicações de amostra

Aplicações de amostra que destacam a funcionalidade MAM em aplicações Xamarin.Android e Xamarin.Forms estão disponíveis no GitHub.

Suporte

Se a sua organização for um cliente Intune existente, trabalhe com o seu representante de suporte da Microsoft para abrir um bilhete de suporte e criar um problema na página de assuntos GitHub. Ajudaremos assim que pudermos.