Microsoft Authenticator kullanan iOS uygulamalarını ADAL.NET'dan MSAL.NET'a geçirme

.NET için Azure Active Directory Kimlik Doğrulama Kitaplığı 'nı (ADAL.NET) ve iOS aracısını kullanıyorsunuz. Şimdi 4.3 sürümünden itibaren iOS'ta aracıyı destekleyen .NET için Microsoft Kimlik Doğrulama Kitaplığı'na (MSAL.NET) geçme zamanı geldi.

Nereden başlamalısınız? Bu makale, Xamarin iOS uygulamanızı ADAL'dan MSAL'ye geçirmenize yardımcı olur.

Önkoşullar

Bu makalede, iOS aracısı ile tümleştirilmiş bir Xamarin iOS uygulamanız olduğu varsayılır. Aksi takdirde doğrudan MSAL.NET geçin ve aracı uygulamasını orada başlatın. yeni bir uygulamayla MSAL.NET'da iOS aracısını çağırma hakkında bilgi için bu belgelere bakın.

Background

Aracılar nedir?

Aracılar, Android ve iOS üzerinde Microsoft tarafından sağlanan uygulamalardır. (Bkz.iOS ve Android'de Microsoft Authenticator uygulaması ve Android'de Intune Şirket Portalı uygulaması.)

Şu olanaklara olanak tanır:

ADAL'dan MSAL'ye geçiş

1. Adım: Aracıyı etkinleştirme

Geçerli ADAL kodu:MSAL karşılığı:
ADAL.NET'de aracı desteği kimlik doğrulaması bağlamı temelinde etkinleştirilmiştir. Varsayılan olarak devre dışıdır. Bir

useBroker aracısını çağırmak için oluşturucuda PlatformParameters true bayrağı:

public PlatformParameters(
        UIViewController callerViewController,
        bool useBroker)

Ayrıca, platforma özgü kodda, bu örnekte, iOS için sayfa oluşturucuda useBroker bayrağını true olarak ayarlayın:

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

Ardından, alma belirteci çağrısına parametreleri ekleyin:

 AuthenticationResult result =
                    await
                        AuthContext.AcquireTokenAsync(
                              Resource,
                              ClientId,
                              new Uri(RedirectURI),
                              platformParameters)
                              .ConfigureAwait(false);
MSAL.NET aracı desteği PublicClientApplication temelinde etkinleştirilir. Varsayılan olarak devre dışıdır. Etkinleştirmek için

WithBroker() parametresini (varsayılan olarak true olarak ayarlayın) aracıyı çağırmak için:

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

Alma belirteci çağrısında:

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

2. Adım: UIViewController() ayarlama

ADAL.NET'de, bir UIViewController öğesinin PlatformParametersbir parçası olarak geçirdiniz. (1. Adım'daki örne bakın.) MSAL.NET'da geliştiricilere daha fazla esneklik sağlamak için bir nesne penceresi kullanılır, ancak normal iOS kullanımında gerekli değildir. Aracıyı kullanmak için, aracıdan yanıt göndermek ve almak için nesne penceresini ayarlayın.

Geçerli ADAL kodu:MSAL karşılığı:
bir UIViewController geçirildi

PlatformParameters iOS'a özgü platformda.

page.BrokerParameters = new PlatformParameters(
          this,
          true,
          PromptBehavior.SelectAccount);
MSAL.NET'da, iOS için nesne penceresini ayarlamak için iki şey yaparsınız:
  1. içinde AppDelegate.csyeni UIViewController()bir olarak ayarlayınApp.RootViewController. Bu atama, aracıya yapılan çağrıya sahip bir UIViewController olmasını sağlar. Doğru ayarlı değilse şu hatayı alabilirsiniz: "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. AcquireTokenInteractive çağrısında kullanın .WithParentActivityOrWindow(App.RootViewController)ve kullanacağınız nesne penceresine başvuruyu geçirin.

Örneğin:

App.cs içinde:

   public static object RootViewController { get; set; }

AppDelegate.cs içinde:

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

Alma belirteci çağrısında:

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

3. Adım: AppDelegate'i geri çağırmayı işleyecek şekilde güncelleştirme

Hem ADAL hem de MSAL aracıyı çağırır ve aracı da sınıfın yöntemi aracılığıyla OpenUrl uygulamanıza geri çağrır AppDelegate . Daha fazla bilgi için bu belgelere bakın.

Burada ADAL.NET ile MSAL.NET arasında değişiklik yoktur.

4. Adım: URL düzenini kaydetme

ADAL.NET ve MSAL.NET aracıyı çağırmak ve aracı yanıtını uygulamaya geri döndürmek için URL'leri kullanın. URL düzenini uygulamanızın Info.plist dosyasına aşağıdaki gibi kaydedin:

Geçerli ADAL kodu:MSAL karşılığı:
URL düzeni uygulamanız için benzersizdir.

CFBundleURLSchemes ad şunları içermelidir:

msauth.

ön ek olarak, ardından CFBundleURLName

Örneğin: $"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>

Not

Bu URL düzeni, aracıdan yanıt aldığında uygulamayı benzersiz olarak tanımlamak için kullanılan yeniden yönlendirme URI'sinin bir parçası haline gelir.

5. Adım: Aracı tanımlayıcısını LSApplicationQueriesSchemes bölümüne ekleme

ADAL.NET ve MSAL.NET her ikisi de aracının cihazda yüklü olup olmadığını denetlemek için kullanır -canOpenURL: . iOS aracısı için doğru tanımlayıcıyı info.plist dosyasının LSApplicationQueriesSchemes bölümüne aşağıdaki gibi ekleyin:

Geçerli ADAL kodu:MSAL karşılığı:
Kullanır

msauth

<key>LSApplicationQueriesSchemes</key>
<array>
     <string>msauth</string>
</array>
Kullanır

msauthv2

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

6. Adım: Azure portalında yeniden yönlendirme URI'nizi kaydetme

hem ADAL.NET hem de MSAL.NET, aracıyı hedeflediğinde yeniden yönlendirme URI'sine ek bir gereksinim ekler. Azure portalında yeniden yönlendirme URI'sini uygulamanıza kaydedin.

Geçerli ADAL kodu:MSAL karşılığı:

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

Örnek:

mytestiosapp://com.mycompany.myapp

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

Örnek:

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

Azure portalında yeniden yönlendirme URI'sini kaydetme hakkında daha fazla bilgi için bkz . 7. Adım: Uygulama kaydınıza yeniden yönlendirme URI'sini ekleme.

7. Adım: Entitlements.plist dosyasını ayarlama

Entitlements.plist dosyasında anahtarlık erişimini etkinleştirin:

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

Anahtarlık erişimini etkinleştirme hakkında daha fazla bilgi için bkz . Anahtarlık erişimini etkinleştirme.

Sonraki adımlar

MSAL.NET ile Xamarin iOS'a özgü önemli noktalar hakkında bilgi edinin.