Microsoft Authenticatort használó iOS-alkalmazások migrálása ADAL.NET-ból MSAL.NET

Az Azure Active Directory Authentication Library for .NET -t (ADAL.NET) és az iOS-közvetítőt használta. Itt az ideje, hogy migráljon a Microsoft Authentication Library for .NET-be (MSAL.NET), amely támogatja az iOS-alapú közvetítőt a 4.3-es kiadástól kezdve.

Hol kezdje? Ez a cikk segít a Xamarin iOS-alkalmazás migrálásában az ADAL-ból az MSAL-be.

Előfeltételek

Ez a cikk feltételezi, hogy már rendelkezik xamarin iOS-alkalmazással, amely integrálva van az iOS-közvetítővel. Ha nem, lépjen közvetlenül a MSAL.NET, és kezdje el a közvetítő implementálását. Az iOS-közvetítő új alkalmazással MSAL.NET való meghívásáról ebben a dokumentációban talál további információt.

Háttér

Mik azok a közvetítők?

A közvetítők a Microsoft által androidos és iOS rendszerű alkalmazások. (Lásd:Microsoft Authenticator alkalmazás iOS és Android rendszeren, valamint az androidos Intune Céges portál alkalmazás.)

Engedélyezik a következőt:

Migrálás ADAL-ról MSAL-ra

1. lépés: A közvetítő engedélyezése

Aktuális ADAL-kód:MSAL-megfelelő:
A ADAL.NET a közvetítők támogatása hitelesítésenként engedélyezve lett. Alapértelmezés szerint le van tiltva. Be kellett állítania egy

useBroker a közvetítő meghívásához a konstruktorban a PlatformParameters true (igaz) jelölő:

public PlatformParameters(
        UIViewController callerViewController,
        bool useBroker)

Emellett a platformspecifikus kódban, ebben a példában az iOS-hez készült lapmegjelenítőben állítsa be a useBroker jelölő igaz értékre:

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

Ezután adja meg a paramétereket a beolvasási jogkivonat-hívásban:

 AuthenticationResult result =
                    await
                        AuthContext.AcquireTokenAsync(
                              Resource,
                              ClientId,
                              new Uri(RedirectURI),
                              platformParameters)
                              .ConfigureAwait(false);
A MSAL.NET a közvetítők támogatása NyilvánosclientApplication-alapú alapon engedélyezve van. Alapértelmezés szerint le van tiltva. Az engedélyezéshez használja a

WithBroker() paraméter (alapértelmezés szerint igaz értékre van állítva) a közvetítő meghívásához:

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

A jogkivonat beszerzésére irányuló hívásban:

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

2. lépés: UIViewController() beállítása

A ADAL.NET egy UIViewControllert adott át a PlatformParameterskövetkező részeként: . (Lásd a példát az 1. lépésben.) A MSAL.NET a fejlesztőknek nagyobb rugalmasság érdekében objektumablakot használnak, de ez nem szükséges a rendszeres iOS-használathoz. A közvetítő használatához állítsa be az objektumablakot, hogy válaszokat küldjön és fogadjon a közvetítőtől.

Aktuális ADAL-kód:MSAL-megfelelő:
A UIViewController át lesz adva a

PlatformParameters az iOS-specifikus platformon.

page.BrokerParameters = new PlatformParameters(
          this,
          true,
          PromptBehavior.SelectAccount);
Az MSAL.NET két dolgot kell tennie az iOS objektumablakának beállításához:
  1. In AppDelegate.cs, set App.RootViewController to a new UIViewController(). Ez a hozzárendelés biztosítja, hogy legyen egy UIViewController a közvetítő hívásával. Ha nincs megfelelően beállítva, a következő hibaüzenet jelenhet meg: "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. A AcquireTokenInteractive hívásban használja .WithParentActivityOrWindow(App.RootViewController)és adja át a használni kívánt objektumablakra mutató hivatkozást.

Például:

A App.cs-ben:

   public static object RootViewController { get; set; }

A AppDelegate.cs-ben:

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

A jogkivonat beszerzésére irányuló hívásban:

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

3. lépés: Az AppDelegate frissítése a visszahívás kezeléséhez

Az ADAL és az MSAL is meghívja a közvetítőt, a közvetítő pedig az osztály metódusával visszahívja az OpenUrlAppDelegate alkalmazást. További információkat ebben a dokumentációban talál.

Itt nincs változás ADAL.NET és MSAL.NET között.

4. lépés: URL-séma regisztrálása

ADAL.NET és MSAL.NET URL-címekkel hívja meg a közvetítőt, és adja vissza a közvetítő válaszát az alkalmazásnak. Regisztrálja az URL-sémát az Info.plist alkalmazás fájljában az alábbiak szerint:

Aktuális ADAL-kód:MSAL-megfelelő:
Az URL-séma egyedi az alkalmazás számára. A

CFBundleURLSchemes a névnek tartalmaznia kell

msauth.

előtagként, majd a CFBundleURLName

Például: $"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>

Feljegyzés

Ez az URL-séma része lesz az átirányítási URI-nak, amely az alkalmazás egyedi azonosítására szolgál, amikor megkapja a választ a közvetítőtől.

5. lépés: A közvetítőazonosító hozzáadása az LSApplicationQueriesSchemes szakaszhoz

ADAL.NET és MSAL.NET egyaránt annak ellenőrzésére, -canOpenURL: hogy a közvetítő telepítve van-e az eszközön. Adja hozzá az iOS-közvetítő megfelelő azonosítóját az info.plist fájl LSApplicationQueriesSchemes szakaszához az alábbiak szerint:

Aktuális ADAL-kód:MSAL-megfelelő:
Használ

msauth

<key>LSApplicationQueriesSchemes</key>
<array>
     <string>msauth</string>
</array>
Használ

msauthv2

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

6. lépés: Átirányítási URI regisztrálása az Azure Portalon

ADAL.NET és MSAL.NET is hozzáad egy további követelményt az átirányítási URI-hez, amikor az a közvetítőt célozza. Regisztrálja az átirányítási URI-t az alkalmazással az Azure Portalon.

Aktuális ADAL-kód:MSAL-megfelelő:

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

Példa:

mytestiosapp://com.mycompany.myapp

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

Példa:

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

Az átirányítási URI Azure Portalon való regisztrálásáról további információt a 7. lépésben talál : Átirányítási URI hozzáadása az alkalmazásregisztrációhoz.

7. lépés: A Entitlements.plist beállítása

Kulcskarika-hozzáférés engedélyezése a Entitlements.plist fájlban:

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

A kulcskarika-hozzáférés engedélyezésével kapcsolatos további információkért lásd: Kulcskarika-hozzáférés engedélyezése.

Következő lépések

Ismerje meg a Xamarin iOS-specifikus szempontjait MSAL.NET.