Share via


Eseguire la migrazione di applicazioni iOS che usano Microsoft Authenticator da ADAL.NET a MSAL.NET

È stato usato Azure Active Directory Authentication Library per .NET (ADAL.NET) e il broker iOS. È ora possibile eseguire la migrazione a Microsoft Authentication Library per .NET (MSAL.NET), che supporta il broker in iOS dalla versione 4.3 successiva.

Dove iniziare? Questo articolo illustra come eseguire la migrazione dell'app Xamarin iOS da ADAL a MSAL.

Prerequisiti

Questo articolo presuppone che l'utente abbia già un'app Xamarin iOS integrata con il broker iOS. In caso contrario, passare direttamente a MSAL.NET e iniziare l'implementazione del broker. Per informazioni su come richiamare il broker iOS in MSAL.NET con una nuova applicazione, vedere questa documentazione.

Background

Che cosa sono i broker?

I broker sono applicazioni fornite da Microsoft in Android e iOS. (Vedere il App Microsoft Authenticator in iOS e Android e l'app Portale aziendale Intune in Android.

Abilitano:

Eseguire la migrazione da ADAL a MSAL

Passaggio 1: Abilitare il broker

Codice ADAL corrente:Controparte di MSAL:
In ADAL.NET, il supporto del broker è stato abilitato in base al contesto di autenticazione. Per impostazione predefinita, è disabilitata. Dovevi impostare un

useBroker flag su true nel PlatformParameters costruttore per chiamare il broker:

public PlatformParameters(
        UIViewController callerViewController,
        bool useBroker)

Inoltre, nel codice specifico della piattaforma, in questo esempio, nel renderer di pagina per iOS, impostare useBroker contrassegno su true:

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

Includere quindi i parametri nella chiamata al token di acquisizione:

 AuthenticationResult result =
                    await
                        AuthContext.AcquireTokenAsync(
                              Resource,
                              ClientId,
                              new Uri(RedirectURI),
                              platformParameters)
                              .ConfigureAwait(false);
In MSAL.NET, il supporto broker è abilitato per ogni publicClientApplication. Per impostazione predefinita, è disabilitata. Per abilitarlo, usare

WithBroker() parametro (impostato su true per impostazione predefinita) per chiamare il broker:

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

Nella chiamata di acquisizione del token:

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

Passaggio 2: Impostare un uiViewController()

In ADAL.NET è stato passato un oggetto UIViewController come parte di PlatformParameters. Vedere l'esempio nel passaggio 1. In MSAL.NET, per offrire agli sviluppatori maggiore flessibilità, viene usata una finestra oggetto, ma non è necessaria nell'utilizzo normale di iOS. Per usare il broker, impostare la finestra dell'oggetto per inviare e ricevere risposte dal broker.

Codice ADAL corrente:Controparte di MSAL:
Un UIViewController viene passato a

PlatformParameters nella piattaforma specifica di iOS.

page.BrokerParameters = new PlatformParameters(
          this,
          true,
          PromptBehavior.SelectAccount);
In MSAL.NET eseguire due operazioni per impostare la finestra dell'oggetto per iOS:
  1. In AppDelegate.csimpostare su App.RootViewController un nuovo UIViewController()oggetto . Questa assegnazione garantisce che sia presente un UIViewController con la chiamata al broker. Se non è impostata correttamente, è possibile che venga visualizzato questo errore: "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. Nella chiamata AcquireTokenInteractive usare .WithParentActivityOrWindow(App.RootViewController)e passare il riferimento alla finestra dell'oggetto che si userà.

Ad esempio:

In App.cs:

   public static object RootViewController { get; set; }

In AppDelegate.cs:

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

Nella chiamata di acquisizione del token:

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

Passaggio 3: Aggiornare AppDelegate per gestire il callback

Sia ADAL che MSAL chiamano il broker e il broker a sua volta richiama l'applicazione tramite il OpenUrl metodo della AppDelegate classe . Per altre informazioni, vedere questa documentazione.

Non sono presenti modifiche tra ADAL.NET e MSAL.NET.

Passaggio 4: Registrare uno schema URL

ADAL.NET e MSAL.NET usare gli URL per richiamare il broker e restituire la risposta del broker all'app. Registrare lo schema URL nel file per l'app Info.plist come indicato di seguito:

Codice ADAL corrente:Controparte di MSAL:
Lo schema URL è univoco per l'app. La

CFBundleURLSchemes il nome deve includere

msauth.

come prefisso, seguito dal CFBundleURLName

Ad esempio: $"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>

Nota

Questo schema URL diventa parte dell'URI di reindirizzamento usato per identificare in modo univoco l'app quando riceve la risposta dal broker.

Passaggio 5: Aggiungere l'identificatore del broker alla sezione LSApplicationQueriesSchemes

ADAL.NET e MSAL.NET entrambi usano -canOpenURL: per verificare se il broker è installato nel dispositivo. Aggiungere l'identificatore corretto per il broker iOS alla sezione LSApplicationQueriesSchemes del file info.plist come indicato di seguito:

Codice ADAL corrente:Controparte di MSAL:
Utilizza

msauth

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

msauthv2

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

Passaggio 6: Registrare l'URI di reindirizzamento nel portale di Azure

ADAL.NET e MSAL.NET entrambi aggiungere un requisito aggiuntivo sull'URI di reindirizzamento quando è destinato al broker. Registrare l'URI di reindirizzamento con l'applicazione nel portale di Azure.

Codice ADAL corrente:Controparte di MSAL:

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

Esempio:

mytestiosapp://com.mycompany.myapp

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

Esempio:

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

Per altre informazioni su come registrare l'URI di reindirizzamento nella portale di Azure, vedere Passaggio 7: Aggiungere un URI di reindirizzamento alla registrazione dell'app.

Passaggio 7: Impostare Entitlements.plist

Abilitare l'accesso keychain nel file Entitlements.plist :

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

Per altre informazioni sull'abilitazione dell'accesso keychain, vedere Abilitare l'accesso keychain.

Passaggi successivi

Informazioni sulle considerazioni specifiche di Xamarin iOS con MSAL.NET.