Microsoft Intune App SDK Xamarin-bindingen

Belangrijk

Xamarin.Forms is ontwikkeld tot .NET Multi-Platform App UI (MAUI). Bestaande Xamarin-projecten moeten worden gemigreerd naar .NET MAUI. Zie de documentatie voor Upgrade van Xamarin naar .NET & .NET MAUI voor meer informatie over het upgraden van Xamarin-projecten naar .NET.

Xamarin-ondersteuning is beëindigd vanaf 1 mei 2024 voor alle Xamarin SDK's, inclusief Xamarin. Forms en Intune App SDK Xamarin Bindings. Zie Intune App SDK voor .NET MAUI - Androiden Microsoft Intune App SDK voor MAUI.iOS voor Intune ondersteuning op Android- en iOS-platforms.

Overzicht

De Intune App SDK Xamarin Bindings maken Intune app-beveiligingsbeleid mogelijk in iOS- en Android-apps die zijn gebouwd met Xamarin. Met de bindingen kunnen ontwikkelaars eenvoudig Intune functies voor app-beveiliging inbouwen in hun op Xamarin gebaseerde app.

Met de Microsoft Intune App SDK Xamarin Bindings kunt u Intune app-beveiligingsbeleid (ook wel APP- of MAM-beleid genoemd) opnemen in uw apps die zijn ontwikkeld met Xamarin. Een MAM-toepassing is een toepassing die is geïntegreerd met de Intune App SDK. IT-beheerders kunnen app-beveiligingsbeleid implementeren in uw mobiele app wanneer Intune de app actief beheert.

Wat wordt ondersteund?

Ontwikkelaarsmachines

  • Windows (Visual Studio versie 15.7+)
  • macOS

Platformen voor mobiele apps

  • Android
  • iOS

Intune Mobile Application Management-scenario's

  • MAM Intune
  • Intune apparaten die zijn ingeschreven bij MDM
  • Apparaten die zijn ingeschreven bij EMM van derden

Xamarin-apps die zijn gebouwd met de Intune App SDK Xamarin Bindings kunnen nu Intune app-beveiligingsbeleid ontvangen op zowel Intune mdm-apparaten (Mobile Device Management) als niet-ingeschreven apparaten.

Vereisten

Bekijk de licentievoorwaarden. Druk een kopie van de licentievoorwaarden voor uw records af en bewaar deze. Door de Intune App SDK Xamarin Bindings te downloaden en te gebruiken, gaat u akkoord met dergelijke licentievoorwaarden. Als u deze niet accepteert, gebruikt u de software niet.

De Intune SDK is afhankelijk van Microsoft Authentication Library (MSAL) voor de verificatie- en voorwaardelijke startscenario's, waarvoor apps moeten worden geconfigureerd met Microsoft Entra ID.

Als uw toepassing al is geconfigureerd voor het gebruik van MSAL en een eigen aangepaste client-id heeft die wordt gebruikt om te verifiëren met Microsoft Entra ID, moet u ervoor zorgen dat de stappen worden gevolgd om uw Xamarin-app-machtigingen te geven aan de Intune MAM-service (Mobile Application Management). Gebruik de instructies in de sectie 'Uw app toegang geven tot de Intune Mobile App Management-service' van de handleiding Aan de slag met de Intune SDK.

Beveiligingsoverwegingen

Mogelijke spoofing, openbaarmaking van informatie en uitbreiding van bevoegdheden voorkomen:

  • Zorg ervoor dat de ontwikkeling van Xamarin-apps wordt uitgevoerd op een beveiligd werkstation.
  • Zorg ervoor dat de bindingen afkomstig zijn van een geldige Microsoft-bron:
  • Configureer uw NuGet-configuratie voor uw project om ondertekende, ongewijzigde NuGet-pakketten te vertrouwen. Zie Ondertekende pakketten installeren voor meer informatie.
  • Beveilig de uitvoermap die de Xamarin-app bevat. Overweeg het gebruik van een map op gebruikersniveau voor de uitvoer.

Beveiligingsbeleid voor Intune apps inschakelen in uw mobiele iOS-app

Belangrijk

Intune brengt regelmatig updates uit voor de Intune App SDK. Controleer regelmatig de Intune App SDK Xamarin Bindings op updates en neem deze op in uw releasecyclus voor softwareontwikkeling om ervoor te zorgen dat uw apps de nieuwste instellingen voor app-beveiligingsbeleid ondersteunen.

  1. Voeg microsoft.Intune toe. MAM. Xamarin.iOS NuGet-pakket voor uw Xamarin.iOS-project.

  2. Volg de algemene stappen die vereist zijn voor het integreren van de Intune App SDK in een mobiele iOS-app. U kunt beginnen met stap 3 van de integratie-instructies uit de ontwikkelaarshandleiding voor Intune App SDK voor iOS. U kunt de laatste stap in die sectie van het uitvoeren van de IntuneMAMConfigurator overslaan, omdat dit hulpprogramma is opgenomen in Microsoft. Intune. MAM. Xamarin.iOS-pakket en wordt automatisch uitgevoerd tijdens het bouwen. Belangrijk: het inschakelen van het delen van sleutelhangers voor een app verschilt in Visual Studio enigszins van Xcode. Open de plist Rechten van de app en zorg ervoor dat de optie 'Sleutelhanger inschakelen' is ingeschakeld en of de juiste groepen voor het delen van sleutelhangers zijn toegevoegd in die sectie. Zorg er vervolgens voor dat de plist Rechten is opgegeven in het veld 'Aangepaste rechten' van de opties 'iOS-bundelondertekening' van het project voor alle juiste configuratie-/platformcombinaties.

  3. Zodra de bindingen zijn toegevoegd en de app correct is geconfigureerd, kan uw app de API's van de Intune SDK gaan gebruiken. Hiervoor moet u de volgende naamruimte opnemen:

    using Microsoft.Intune.MAM;
    
  4. Als u app-beveiligingsbeleid wilt ontvangen, moet uw app worden ingeschreven bij de Intune MAM-service. Als uw app geen gebruik maakt van Microsoft Authentication Library (MSAL) om gebruikers te verifiëren en u wilt dat de Intune SDK verificatie verwerkt, moet uw app de UPN van de gebruiker opgeven voor de loginAndEnrollmentAccount-methode van IntuneMAMEnrollmentManager:

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

    Apps kunnen in null worden doorgegeven als de UPN van de gebruiker onbekend is op het moment van de aanroep. In dit geval wordt gebruikers gevraagd hun e-mailadres en wachtwoord in te voeren.

    Als uw app al gebruikmaakt van MSAL om gebruikers te verifiëren, kunt u een ervaring voor eenmalige aanmelding (SSO) configureren tussen uw app en de Intune SDK. Eerst moet u de standaardinstellingen Microsoft Entra die door de Intune SDK worden gebruikt, overschrijven met die van uw app. U kunt dit doen via de intuneMAMSettings-woordenlijst in de Info.plist van de app, zoals vermeld in de ontwikkelaarshandleiding voor de Intune App SDK voor iOS, of u kunt dit doen in code via de Microsoft Entra ID onderdrukkingseigenschappen van de klasse IntuneMAMSettings. De methode Info.plist wordt aanbevolen voor toepassingen waarvan de MSAL-instellingen statisch zijn, terwijl de onderdrukkingseigenschappen worden aanbevolen voor toepassingen die deze waarden tijdens runtime bepalen. Zodra alle SSO-instellingen zijn geconfigureerd, moet uw app de UPN van de gebruiker opgeven voor de methode RegisterAndEnEnrollmentAccount van IntuneMAMEnrollmentManager nadat deze is geverifieerd:

    IntuneMAMEnrollmentManager.Instance.RegisterAndEnrollAccount(string identity);
    

    Apps kunnen het resultaat van een inschrijvingspoging bepalen door de methode EnrollmentRequestWithStatus te implementeren in een subklasse van IntuneMAMEnrollmentDelegate en de eigenschap Delegate van IntuneMAMEnrollmentManager in te stellen op een exemplaar van die klasse.

    Na een geslaagde inschrijving kunnen apps de UPN van het ingeschreven account bepalen (indien eerder onbekend) door een query uit te voeren op de volgende eigenschap:

     string enrolledAccount = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;
    

Voorbeeldtoepassingen

Voorbeeldtoepassingen die MAM-functionaliteit markeren in Xamarin.iOS-apps zijn beschikbaar op GitHub.

Opmerking

Er is geen remapper voor iOS/iPadOS. Integreren in een Xamarin. Forms app moet hetzelfde zijn als voor een normaal Xamarin.iOS-project.

Beveiligingsbeleid voor Intune apps inschakelen in uw mobiele Android-app

  1. Voeg microsoft.Intune toe. MAM. Xamarin.Android NuGet-pakket voor uw Xamarin.Android-project.
    1. Voor een Xamarin. Forms app voegt u microsoft.Intune toe. MAM. Remapper.Tasks NuGet-pakket ook naar uw Xamarin.Android-project.
  2. Volg de algemene stappen die vereist zijn voor het integreren van de Intune App SDK in een mobiele Android-app terwijl u naar dit document verwijst voor meer informatie.

Xamarin.Android-integratie

Een volledig overzicht van de integratie van de Intune App SDK vindt u in de ontwikkelaarshandleiding voor Microsoft Intune App SDK voor Android. Terwijl u de handleiding leest en de Intune App SDK integreert met uw Xamarin-app, zijn de volgende secties bedoeld om de verschillen te markeren tussen de implementatie voor een systeemeigen Android-app die is ontwikkeld in Java en een Xamarin-app die is ontwikkeld in C#. Deze secties moeten als aanvulling worden behandeld en kunnen niet fungeren als vervanging voor het lezen van de handleiding in zijn geheel.

Remapper

Vanaf release 1.4428.1 kan het Microsoft.Intune.MAM.Remapper pakket worden toegevoegd aan een Xamarin.Android-toepassing als buildtool om de MAM-klasse, -methode en systeemservices te vervangen. Als de remapper is opgenomen, worden de mam-equivalente vervangingsgedeelten van de secties Hernoemde methoden en MAM-toepassing automatisch uitgevoerd wanneer de toepassing wordt gebouwd.

Als u een klasse wilt uitsluiten van MAM-ification door de Remapper, kan de volgende eigenschap worden toegevoegd aan uw projectbestand .csproj .

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

Opmerking

De remapper voorkomt momenteel foutopsporing in Xamarin.Android-apps. Handmatige integratie wordt aanbevolen om fouten in uw toepassing op te sporen.

Hernoemde methoden

In veel gevallen is een methode die beschikbaar is in de Android-klasse gemarkeerd als definitief in de MAM-vervangingsklasse. In dit geval biedt de MAM-vervangingsklasse een methode met dezelfde naam (achtervoegsel met MAM) die u in plaats daarvan moet overschrijven. Wanneer bijvoorbeeld wordt afgeleid van MAMActivity, in plaats van te overschrijven OnCreate() en aan te roepen base.OnCreate(), Activity moet u overschrijven OnMAMCreate() en aanroepen base.OnMAMCreate().

MAM-toepassing

Uw app moet een Android.App.Application klasse definiëren. Als MAM handmatig wordt geïntegreerd, moet mam worden overgenomen van MAMApplication. Zorg ervoor dat uw subklasse correct is ingericht met het [Application] kenmerk en de (IntPtr, JniHandleOwnership) constructor overschrijft.

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

Opmerking

Een probleem met de MAM Xamarin-bindingen kan ertoe leiden dat de toepassing vastloopt wanneer deze wordt geïmplementeerd in de foutopsporingsmodus. Als tijdelijke oplossing moet het Debuggable=false kenmerk worden toegevoegd aan de Application klasse en moet de android:debuggable="true" vlag uit het manifest worden verwijderd als deze handmatig is ingesteld.

Functies inschakelen waarvoor app-deelname is vereist

Voorbeeld: Bepalen of een pincode is vereist voor de app

MAMPolicyManager.GetPolicy(currentActivity).IsPinRequired;

Voorbeeld: de primaire Intune gebruiker bepalen

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

Voorbeeld: Bepalen of opslaan in apparaat- of cloudopslag is toegestaan

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

Registreren voor meldingen van de SDK

Uw app moet worden geregistreerd voor meldingen van de SDK door een MAMNotificationReceiver te maken en deze te registreren bij MAMNotificationReceiverRegistry. Dit wordt gedaan door de ontvanger en het gewenste type melding op te geven in App.OnMAMCreate, zoals in het onderstaande voorbeeld wordt geïllustreerd:

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);
    }
    ...

MAM-inschrijvingsmanager

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

Xamarin. Forms integratie

Voor Xamarin.Forms toepassingen voert het Microsoft.Intune.MAM.Remapper pakket automatisch mam-klassevervanging uit door klassen te injecteren MAM in de klassehiërarchie van veelgebruikte Xamarin.Forms klassen.

Opmerking

De Xamarin. Forms integratie moet worden uitgevoerd naast de Xamarin.Android-integratie die hierboven is beschreven. De remapper gedraagt zich anders voor Xamarin. Forms apps, dus de handmatige MAM-vervangingen moeten nog steeds worden uitgevoerd.

Zodra de Remapper is toegevoegd aan uw project, moet u de mam-equivalente vervangingen uitvoeren. En kan bijvoorbeeld FormsAppCompatActivityFormsApplicationActivity blijven worden gebruikt in uw toepassing door onderdrukkingen aan OnCreate respectievelijk en OnResume worden vervangen door de MAM-equivalenten OnMAMCreate en OnMAMResume .

    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());
        }

Als de vervangingen niet worden gemaakt, kunnen de volgende compilatiefouten optreden totdat u de vervangingen aanbrengt:

  • Compilerfout CS0239. Deze fout wordt vaak weergegeven in deze vorm 'MainActivity.OnCreate(Bundle)': cannot override inherited member 'MAMAppCompatActivityBase.OnCreate(Bundle)' because it is sealed. Dit is te verwachten omdat wanneer de Remapper de overname van Xamarin-klassen wijzigt, bepaalde functies worden gemaakt sealed en er in plaats daarvan een nieuwe MAM-variant wordt toegevoegd om te overschrijven.
  • Compilerfout CS0507: deze fout wordt vaak weergegeven in deze vorm 'MyActivity.OnRequestPermissionsResult()' cannot change access modifiers when overriding 'public' inherited member .... Wanneer de remapper de overname van sommige Xamarin-klassen wijzigt, worden bepaalde lidfuncties gewijzigd in public. Als u een van deze functies overschrijft, moet u ook de toegangsmodificatoren voor deze overschrijvingen public wijzigen.

Opmerking

Met Remapper wordt een afhankelijkheid die Visual Studio gebruikt voor automatische voltooiing van IntelliSense opnieuw geschreven. Daarom moet u het project mogelijk opnieuw laden en opnieuw opbouwen wanneer de Remapper wordt toegevoegd voor IntelliSense om de wijzigingen correct te herkennen.

Problemen oplossen

  • Als u een leeg, wit scherm tegenkomt in uw toepassing bij het starten, moet u de navigatieaanroepen mogelijk afdwingen om uit te voeren op de hoofdthread.
  • De Intune SDK Xamarin Bindings bieden geen ondersteuning voor apps die gebruikmaken van een platformoverschrijdend framework, zoals MvvmCross vanwege conflicten tussen MvvmCross en Intune MAM-klassen. Terwijl sommige klanten mogelijk succes hebben gehad met de integratie na het verplaatsen van hun apps naar gewone Xamarin. Forms bieden we geen expliciete richtlijnen of invoegtoepassingen voor app-ontwikkelaars die MvvmCross gebruiken.

Bedrijfsportal-app

De Intune SDK Xamarin Bindings zijn afhankelijk van de aanwezigheid van de Bedrijfsportal Android-app op het apparaat om app-beveiligingsbeleid in te schakelen. De Bedrijfsportal haalt het beveiligingsbeleid voor apps op uit de Intune-service. Wanneer de app wordt geïnitialiseerd, wordt beleid en code geladen om dat beleid af te dwingen vanuit de Bedrijfsportal. De gebruiker hoeft niet te zijn aangemeld.

Opmerking

Wanneer de Bedrijfsportal app zich niet op het Android-apparaat bevindt, gedraagt een door Intune beheerde app zich hetzelfde als een normale app die geen ondersteuning biedt voor Intune app-beveiligingsbeleid.

Voor app-beveiliging zonder apparaatinschrijving hoeft de gebruiker het apparaat niet te registreren met behulp van de Bedrijfsportal-app.

Voorbeeldtoepassingen

Voorbeeldtoepassingen die de MAM-functionaliteit markeren in Xamarin.Android en Xamarin. Forms apps zijn beschikbaar op GitHub.

Ondersteuning

Als uw organisatie een bestaande Intune klant is, neemt u contact op met uw Microsoft-ondersteuningsmedewerker om een ondersteuningsticket te openen en een probleem te maken op de pagina Problemen met GitHub. We helpen zo snel mogelijk.