Share via


iOS-toepassingen migreren die gebruikmaken van Microsoft Authenticator van ADAL.NET naar MSAL.NET

U hebt de Azure Active Directory Authentication Library voor .NET (ADAL.NET) en de iOS-broker gebruikt. Het is nu tijd om vanaf release 4.3 te migreren naar de Microsoft Authentication Library voor .NET (MSAL.NET), die de broker op iOS ondersteunt.

Waar moet ik beginnen? Dit artikel helpt u bij het migreren van uw Xamarin iOS-app van ADAL naar MSAL.

Vereisten

In dit artikel wordt ervan uitgegaan dat u al een Xamarin iOS-app hebt die is geïntegreerd met de iOS-broker. Als u dit nog niet heeft gedaan, gaat u rechtstreeks naar MSAL.NET en begint u daar met de brokerimplementatie. Raadpleeg deze documentatie voor informatie over het aanroepen van de iOS-broker in MSAL.NET met een nieuwe toepassing.

Achtergrond

Wat zijn brokers?

Brokers zijn toepassingen van Microsoft op Android en iOS. (Zie de Microsoft Authenticator-app op iOS en Android en de app Intune-bedrijfsportal op Android.)

Ze schakelen het volgende in:

Upgrade uitvoeren van ADAL naar MSAL

Stap 1: De broker inschakelen

Huidige ADAL-code:MSAL-tegenhanger:
In ADAL.NET is brokerondersteuning per verificatiecontext ingeschakeld. Standaard is deze instellin uitgeschakeld. Je moest een

useBroker markering instellen op Waar in de PlatformParameters constructor om de broker aan te roepen:

public PlatformParameters(
        UIViewController callerViewController,
        bool useBroker)

Stel in het platformspecifieke code in dit voorbeeld, in de paginaweergave voor iOS, ook de useBroker markering ook in op Waar:

page.BrokerParameters = new PlatformParameters(
          this,
          true,
          PromptBehavior.SelectAccount);

Neem vervolgens de parameters op in de aanroep van het acquiretoken:

 AuthenticationResult result =
                    await
                        AuthContext.AcquireTokenAsync(
                              Resource,
                              ClientId,
                              new Uri(RedirectURI),
                              platformParameters)
                              .ConfigureAwait(false);
In MSAL.NET wordt brokerondersteuning ingeschakeld op basis van PublicClientApplication. Standaard is deze instellin uitgeschakeld. Als u dit wilt inschakelen, gebruikt u de

WithBroker() parameter (standaard ingesteld op Waar) om de broker aan te roepen:

var app = PublicClientApplicationBuilder
                .Create(ClientId)
                .WithBroker()
                .WithReplyUri(redirectUriOnIos)
                .Build();

In de aanroep van het token voor verwerven:

result = await app.AcquireTokenInteractive(scopes)
             .WithParentActivityOrWindow(App.RootViewController)
             .ExecuteAsync();

Stap 2: een UIViewController() instellen

In ADAL.NET hebt u een UIViewController doorgegeven als onderdeel van PlatformParameters. (Zie het voorbeeld in stap 1.) In MSAL.NET wordt een objectvenster gebruikt om ontwikkelaars meer flexibiliteit te bieden. Maar dit is niet vereist voor normaal iOS-gebruik. Als u de broker wilt gebruiken, stelt u het objectvenster in om reacties van de broker te kunnen verzenden en te ontvangen.

Huidige ADAL-code:MSAL-tegenhanger:
Een UIViewController wordt doorgegeven aan

PlatformParameters in het iOS-specifieke platform.

page.BrokerParameters = new PlatformParameters(
          this,
          true,
          PromptBehavior.SelectAccount);
In MSAL.NET doet u twee dingen om het objectvenster voor iOS in te stellen:
  1. Stel in AppDelegate.csApp.RootViewController in op een nieuwe UIViewController(). Deze toewijzing zorgt dat er een UIViewController is met de aanroep naar de broker. Als deze niet juist is ingesteld, wordt mogelijk deze fout weergegeven: "uiviewcontroller_required_for_ios_broker":"UIViewController is null, so MSAL.NET cannot invoke the iOS broker. See https://aka.ms/msal-net-ios-broker"
  2. Gebruik in de aanroep AcquireTokenInteractive de .WithParentActivityOrWindow(App.RootViewController) verwijzing naar de activiteit die u wilt gebruiken en geef deze door.

Bijvoorbeeld:

In App.cs:

   public static object RootViewController { get; set; }

In AppDelegate.cs:

   LoadApplication(new App());
   App.RootViewController = new UIViewController();

In de aanroep van het token voor verwerven:

result = await app.AcquireTokenInteractive(scopes)
             .WithParentActivityOrWindow(App.RootViewController)
             .ExecuteAsync();

Stap 3: AppDelegate bijwerken om de aanroep af te handelen

Zowel ADAL als MSAL roepen de broker aan en de broker roept op zijn beurt uw toepassing opnieuw aan via de OpenUrl methode van de AppDelegate klasse. Raadpleeg deze documentatie voor meer informatie.

Er zijn hier geen wijzigingen tussen ADAL.NET en MSAL.NET.

Stap 4: Een URL-schema registreren

ADAL.NET en MSAL.NET gebruiken URL's om de broker aan te roepen en het antwoord van de broker terug te sturen naar de app. Registreer het URL-schema in het Info.plist bestand voor uw app als volgt:

Huidige ADAL-code:MSAL-tegenhanger:
Het URL-schema is uniek voor uw app. De

CFBundleURLSchemes de naam moet het volgende bevatten

msauth.

als voorvoegsel, gevolgd door uw CFBundleURLName

Bijvoorbeeld:$"msauth.(BundleId")

 <key>CFBundleURLTypes</key>
    <array>
      <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>com.yourcompany.xforms</string>
        <key>CFBundleURLSchemes</key>
        <array>
          <string>msauth.com.yourcompany.xforms</string>
        </array>
      </dict>
    </array>

Notitie

Dit URL-schema maakt deel uit van de URI voor omleiding die wordt gebruikt om de app uniek te identificeren wanneer deze het antwoord van de broker ontvangt.

Stap 5: de broker-id toevoegen aan de sectie LSApplicationQueriesSchemes

ADAL.NET en MSAL.NET gebruiken -canOpenURL: beide om te controleren of de broker op het apparaat is geïnstalleerd. Voeg de juiste id voor de iOS-broker als volgt toe aan de sectie LSApplicationQueriesSchemes van het bestand info.plist:

Huidige ADAL-code:MSAL-tegenhanger:
Gebruikt

msauth

<key>LSApplicationQueriesSchemes</key>
<array>
     <string>msauth</string>
</array>
Gebruikt

msauthv2

<key>LSApplicationQueriesSchemes</key>
<array>
     <string>msauthv2</string>
     <string>msauthv3</string>
</array>

Stap 6: uw URI voor omleiding registreren in de Azure Portal

ADAL.NET en MSAL.NET voegen beide een extra vereiste toe voor de URI voor omleiding wanneer deze gericht is op de broker. Registreer de URI voor omleiding bij uw toepassing in de Azure Portal.

Huidige ADAL-code:MSAL-tegenhanger:

"<app-scheme>://<your.bundle.id>"

Voorbeeld:

mytestiosapp://com.mycompany.myapp

$"msauth.{BundleId}://auth"

Voorbeeld:

public static string redirectUriOnIos = "msauth.com.yourcompany.XForms://auth";

Zie stap 7: een URI voor omleiding toevoegen aan uw app-registratie voor meer informatie over het registreren van de URI voor omleiding in de Azure Portal.

Stap 7: de Entitlements.plist instellen

Toegang tot de sleutelketen inschakelen in het bestand Entitlements.plist :

 <key>keychain-access-groups</key>
    <array>
      <string>$(AppIdentifierPrefix)com.microsoft.adalcache</string>
    </array>

Zie Toegang tot sleutelketen inschakelen voor meer informatie over het inschakelen van toegang tot de sleutelketen.

Volgende stappen

Meer informatie over Xamarin iOS-specifieke overwegingen met MSAL.NET.