Udostępnij za pośrednictwem


Migrowanie aplikacji systemu iOS korzystających z aplikacji Microsoft Authenticator z ADAL.NET do MSAL.NET

Używasz biblioteki uwierzytelniania usługi Azure Active Directory dla platformy .NET (ADAL.NET) i brokera systemu iOS. Teraz nadszedł czas na migrację do biblioteki Microsoft Authentication Library for .NET (MSAL.NET), która obsługuje brokera w systemie iOS z wersji 4.3.

Gdzie należy zacząć? Ten artykuł ułatwia migrowanie aplikacji platformy Xamarin dla systemu iOS z biblioteki ADAL do biblioteki MSAL.

Wymagania wstępne

W tym artykule założono, że masz już aplikację platformy Xamarin dla systemu iOS zintegrowaną z brokerem systemu iOS. Jeśli tego nie zrobisz, przejdź bezpośrednio do MSAL.NET i rozpocznij tam implementację brokera. Aby uzyskać informacje na temat wywoływania brokera systemu iOS w MSAL.NET przy użyciu nowej aplikacji, zobacz tę dokumentację.

Uwaga

MSAL.NET w wersji 4.61.0 lub nowszej nie zapewniają obsługi platforma uniwersalna systemu Windows (UWP), Xamarin Android i Xamarin iOS. Zalecamy migrację aplikacji platformy Xamarin do nowoczesnych struktur, takich jak MAUI. Przeczytaj więcej o wycofaniu w temacie Ogłaszanie nadchodzącego wycofania MSAL.NET dla platform Xamarin i platformy UWP.

Tło

Co to są brokerzy?

Brokerzy to aplikacje udostępniane przez firmę Microsoft w systemach Android i iOS. (Zobacz Aplikacja Microsoft Authenticator w systemach iOS i Android oraz aplikacja Intune — Portal firmy w systemie Android).

Włączają:

  • Logowanie jednokrotne.
  • Identyfikacja urządzenia, która jest wymagana przez niektóre zasady dostępu warunkowego. Aby uzyskać więcej informacji, zobacz Zarządzanie urządzeniami.
  • Weryfikacja identyfikacji aplikacji, która jest również wymagana w niektórych scenariuszach przedsiębiorstwa. Aby uzyskać więcej informacji, zobacz Zarządzanie aplikacjami mobilnymi (MAM) w usłudze Intune.

Migrowanie z biblioteki ADAL do biblioteki MSAL

Krok 1. Włączanie brokera

Bieżący kod biblioteki ADAL:Odpowiednik biblioteki MSAL:
W ADAL.NET obsługa brokera została włączona na podstawie kontekstu uwierzytelniania. Jest ona domyślnie wyłączona. Trzeba było ustawić

useBroker flaga true w konstruktorze PlatformParameters w celu wywołania brokera:

public PlatformParameters(
        UIViewController callerViewController,
        bool useBroker)

Ponadto w kodzie specyficznym dla platformy w tym przykładzie w module renderowania strony dla systemu iOS ustaw useBroker flaga na true:

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

Następnie uwzględnij parametry w wywołaniu tokenu uzyskiwania:

 AuthenticationResult result =
                    await
                        AuthContext.AcquireTokenAsync(
                              Resource,
                              ClientId,
                              new Uri(RedirectURI),
                              platformParameters)
                              .ConfigureAwait(false);
W MSAL.NET obsługa brokera jest włączona dla poszczególnych parametrów PublicClientApplication. Jest ona domyślnie wyłączona. Aby ją włączyć, użyj polecenia

WithBroker() parametr (domyślnie ustawiony na wartość true) w celu wywołania brokera:

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

W wywołaniu tokenu uzyskiwania:

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

Krok 2. Ustawianie kontrolki UIViewController()

W ADAL.NET przekazano element UIViewController w ramach elementu PlatformParameters. (Zobacz przykład w kroku 1). W MSAL.NET, aby zapewnić deweloperom większą elastyczność, jest używane okno obiektów, ale nie jest wymagane w regularnym użyciu systemu iOS. Aby użyć brokera, ustaw okno obiektu w celu wysyłania i odbierania odpowiedzi od brokera.

Bieżący kod biblioteki ADAL:Odpowiednik biblioteki MSAL:
Kontrolka UIViewController jest przekazywana do

PlatformParameters na platformie specyficznej dla systemu iOS.

page.BrokerParameters = new PlatformParameters(
          this,
          true,
          PromptBehavior.SelectAccount);
W MSAL.NET wykonaj dwie czynności, aby ustawić okno obiektu dla systemu iOS:
  1. W AppDelegate.cspliku ustaw App.RootViewController wartość na nową UIViewController(). To przypisanie gwarantuje, że istnieje kontrolka UIViewController z wywołaniem brokera. Jeśli nie jest poprawnie ustawiona, może zostać wyświetlony następujący błąd: "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. W wywołaniu AcquireTokenInteractive użyj metody .WithParentActivityOrWindow(App.RootViewController)i przekaż odwołanie do okna obiektu, którego użyjesz.

Przykład:

W pliku App.cs:

   public static object RootViewController { get; set; }

W pliku AppDelegate.cs:

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

W wywołaniu tokenu uzyskiwania:

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

Krok 3. Aktualizowanie elementu AppDelegate w celu obsługi wywołania zwrotnego

Zarówno biblioteki ADAL, jak i MSAL wywołają brokera, a broker z kolei wywołuje aplikację za pomocą OpenUrl metody AppDelegate klasy . Aby uzyskać więcej informacji, zapoznaj się z tą dokumentacją.

Między ADAL.NET a MSAL.NET nie ma żadnych zmian.

Krok 4. Rejestrowanie schematu adresów URL

ADAL.NET i MSAL.NET używają adresów URL do wywoływania brokera i zwracania odpowiedzi brokera z powrotem do aplikacji. Zarejestruj schemat adresu URL w pliku aplikacji w Info.plist następujący sposób:

Bieżący kod biblioteki ADAL:Odpowiednik biblioteki MSAL:
Schemat adresów URL jest unikatowy dla aplikacji. Standard

CFBundleURLSchemes nazwa musi zawierać

msauth.

jako prefiks, a następnie CFBundleURLName

Przykład: $"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>

Uwaga

Ten schemat adresów URL staje się częścią identyfikatora URI przekierowania używanego do unikatowego identyfikowania aplikacji po odebraniu odpowiedzi od brokera.

Krok 5. Dodawanie identyfikatora brokera do sekcji LSApplicationQueriesSchemes

ADAL.NET i MSAL.NET użyć -canOpenURL: polecenia , aby sprawdzić, czy broker jest zainstalowany na urządzeniu. Dodaj prawidłowy identyfikator brokera systemu iOS do sekcji LSApplicationQueriesSchemes pliku info.plist w następujący sposób:

Bieżący kod biblioteki ADAL:Odpowiednik biblioteki MSAL:
Używa

msauth

<key>LSApplicationQueriesSchemes</key>
<array>
     <string>msauth</string>
</array>
Używa

msauthv2

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

Krok 6. Rejestrowanie identyfikatora URI przekierowania w witrynie Azure Portal

ADAL.NET i MSAL.NET dodać dodatkowe wymaganie dotyczące identyfikatora URI przekierowania, gdy jest przeznaczony dla brokera. Zarejestruj identyfikator URI przekierowania w aplikacji w witrynie Azure Portal.

Bieżący kod biblioteki ADAL:Odpowiednik biblioteki MSAL:

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

Przykład:

mytestiosapp://com.mycompany.myapp

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

Przykład:

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

Aby uzyskać więcej informacji na temat rejestrowania identyfikatora URI przekierowania w witrynie Azure Portal, zobacz Krok 7. Dodawanie identyfikatora URI przekierowania do rejestracji aplikacji.

Krok 7. Ustawianie pliku Entitlements.plist

Włącz dostęp pęku kluczy w pliku Entitlements.plist :

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

Aby uzyskać więcej informacji na temat włączania dostępu łańcucha kluczy, zobacz Włączanie dostępu łańcucha kluczy.

Następne kroki

Dowiedz się więcej o zagadnieniach specyficznych dla środowiska Xamarin dla systemu iOS w MSAL.NET.