Konfigurace mobilní aplikace, která volá webová rozhraní API

Po vytvoření aplikace se dozvíte, jak kód nakonfigurovat pomocí parametrů registrace aplikace. Mobilní aplikace představují určité složitosti související s přizpůsobením architektury jejich vytváření.

Knihovny Microsoftu podporující mobilní aplikace

Následující knihovny Microsoftu podporují mobilní aplikace:

Platforma Project on
GitHubu
Balíček Dostat
z těchto možností
Přihlášení uživatelů Přístup k webovým rozhraním API Obecná dostupnost (GA) nebo
Public Preview1
Android (Java) MSAL Android MSAL Rychlý start Knihovna může požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
Android (Kotlin) MSAL Android MSAL Knihovna může požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
iOS (Swift/Obj-C) MSAL pro iOS a macOS MSAL Kurz Knihovna může požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
Xamarin (.NET) MSAL.NET Microsoft.Identity.Client Knihovna může požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA

1Univerzální licenční podmínky pro online služby se vztahují na knihovny ve verzi Public Preview.

Vytvoření instance aplikace

Android

Mobilní aplikace používají PublicClientApplication třídu. Tady je postup vytvoření instance:

PublicClientApplication sampleApp = new PublicClientApplication(
                    this.getApplicationContext(),
                    R.raw.auth_config);

iOS

Mobilní aplikace v iOSu MSALPublicClientApplication musí vytvořit instanci třídy. K vytvoření instance třídy použijte následující kód.

NSError *msalError = nil;

MSALPublicClientApplicationConfig *config = [[MSALPublicClientApplicationConfig alloc] initWithClientId:@"<your-client-id-here>"];
MSALPublicClientApplication *application = [[MSALPublicClientApplication alloc] initWithConfiguration:config error:&msalError];
let config = MSALPublicClientApplicationConfig(clientId: "<your-client-id-here>")
if let application = try? MSALPublicClientApplication(configuration: config){ /* Use application */}

Další vlastnosti MSALPublicClientApplicationConfig mohou přepsat výchozí autoritu, zadat identifikátor URI přesměrování nebo změnit chování ukládání tokenů MSAL do mezipaměti.

Xamarin nebo UPW

Tato část vysvětluje, jak vytvořit instanci aplikace pro aplikace Xamarin.iOS, Xamarin.Android a UPW.

Vytvoření instance aplikace

V Xamarinu nebo UPW je nejjednodušší způsob vytvoření instance aplikace pomocí následujícího kódu. V tomto kódu ClientId je identifikátor GUID registrované aplikace.

var app = PublicClientApplicationBuilder.Create(clientId)
                                        .Build();

Další With<Parameter> metody nastavují nadřazené uživatelské rozhraní, přepíší výchozí autoritu, určí název klienta a verzi telemetrie, určí identifikátor URI přesměrování a určí objekt pro vytváření http, který se má použít. Továrna HTTP se může použít například ke zpracování proxy serverů a k určení telemetrie a protokolování.

Následující části obsahují další informace o vytvoření instance aplikace.

Zadání nadřazeného uživatelského rozhraní, okna nebo aktivity

Před interaktivním ověřováním v Androidu předejte nadřazenou aktivitu. V iOSu, když používáte zprostředkovatele, pass-in ViewController. Stejně jako u UPW můžete chtít předat nadřazené okno. Při získání tokenu ho předáte. Při vytváření aplikace ale můžete také zadat zpětné volání jako delegát, který se vrátí UIParent.

IPublicClientApplication application = PublicClientApplicationBuilder.Create(clientId)
  .ParentActivityOrWindowFunc(() => parentUi)
  .Build();

V Androidu doporučujeme používat CurrentActivityPlugin. Výsledný PublicClientApplication kód tvůrce vypadá takto:

// Requires MSAL.NET 4.2 or above
var pca = PublicClientApplicationBuilder
  .Create("<your-client-id-here>")
  .WithParentActivityOrWindow(() => CrossCurrentActivity.Current)
  .Build();
Vyhledání dalších parametrů sestavení aplikace

Seznam všech dostupných metod PublicClientApplicationBuildernaleznete v seznamu Metody.

Popis všech možností, které jsou vystaveny, naleznete v PublicClientApplicationOptionsreferenční dokumentaci.

Úlohy pro Xamarin iOS

Pokud používáte MSAL.NET v Xamarinu iOS, proveďte následující úlohy.

Další informace najdete v tématu Aspekty Xamarinu pro iOS.

Úlohy pro MSAL pro iOS a macOS

Tyto úlohy jsou nezbytné, když používáte MSAL pro iOS a macOS:

Úlohy pro Xamarin.Android

Pokud používáte Xamarin.Android, proveďte následující úlohy:

Další informace najdete v tématu Aspekty Xamarin.Android.

Důležité informace o prohlížečích v Androidu najdete v tématu O aspektech specifických pro Xamarin.Android s MSAL.NET.

Úkoly pro UPW

V UPW můžete používat podnikové sítě. Následující části popisují úkoly, které byste měli provést v podnikovém scénáři.

Další informace najdete v tématu Důležité informace týkající se UPW s MSAL.NET.

Konfigurace aplikace pro použití zprostředkovatele

V Androidu a iOSu zprostředkovatelé umožňují:

  • Jednotné přihlašování(SSO): Jednotné přihlašování můžete použít pro zařízení zaregistrovaná pomocí Microsoft Entra ID. Když používáte jednotné přihlašování, uživatelé se nemusí přihlašovat ke každé aplikaci.
  • Identifikace zařízení: Toto nastavení umožňuje zásady podmíněného přístupu, které souvisejí se zařízeními Microsoft Entra. Proces ověřování používá certifikát zařízení vytvořený při připojení zařízení k pracovišti.
  • Ověření identifikace aplikace: Když aplikace zavolá zprostředkovatele, předá adresu URL přesměrování. Pak ho zprostředkovatel ověří.

Povolení zprostředkovatele v Xamarinu

Pokud chcete povolit zprostředkovatele v Xamarinu, použijte WithBroker() parametr při volání PublicClientApplicationBuilder.CreateApplication metody. Ve výchozím nastavení .WithBroker() je nastavená hodnota true.

Pokud chcete povolit zprostředkované ověřování pro Xamarin.iOS, postupujte podle kroků v části Xamarin.iOS v tomto článku.

Povolení zprostředkovatele pro MSAL pro Android

Informace o povolení zprostředkovatele v Androidu najdete v tématu Zprostředkované ověřování v Androidu.

Povolení zprostředkovatele pro MSAL pro iOS a macOS

Zprostředkované ověřování je ve výchozím nastavení povolené pro scénáře Microsoft Entra v MSAL pro iOS a macOS.

Následující části obsahují pokyny ke konfiguraci aplikace pro podporu zprostředkovaného ověřování pro MSAL pro Xamarin.iOS nebo MSAL pro iOS a macOS. V obou sadách pokynů se některé kroky liší.

Povolení zprostředkovaného ověřování pro Xamarin iOS

Postupujte podle kroků v této části a povolte aplikaci Xamarin.iOS pro komunikaci s aplikací Microsoft Authenticator .

Krok 1: Povolení podpory zprostředkovatele

Podpora zprostředkovatele je ve výchozím nastavení zakázaná. Povolíte ji pro jednotlivé PublicClientApplication třídy. WithBroker() Parametr použijte při vytváření PublicClientApplication třídy prostřednictvím PublicClientApplicationBuilder. Parametr WithBroker() je ve výchozím nastavení nastavený na true.

var app = PublicClientApplicationBuilder
                .Create(ClientId)
                .WithBroker()
                .WithReplyUri(redirectUriOnIos) // $"msauth.{Bundle.Id}://auth" (see step 6 below)
                .Build();

Krok 2: Aktualizace AppDelegate pro zpracování zpětného volání

Když MSAL.NET zavolá zprostředkovatele, zprostředkuje volání zpět do vaší aplikace. Volá zpět pomocí AppDelegate.OpenUrl metody. Vzhledem k tomu, že MSAL čeká na odpověď od zprostředkovatele, musí vaše aplikace spolupracovat, aby volala MSAL.NET zpět. Toto chování nastavíte aktualizací AppDelegate.cs souboru tak, aby přepsaly metodu, jak ukazuje následující kód.

public override bool OpenUrl(UIApplication app, NSUrl url,
                             string sourceApplication,
                             NSObject annotation)
{
 if (AuthenticationContinuationHelper.IsBrokerResponse(sourceApplication))
 {
  AuthenticationContinuationHelper.SetBrokerContinuationEventArgs(url);
  return true;
 }
 else if (!AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(url))
 {
  return false;
 }
 return true;
}

Tato metoda se vyvolá při každém spuštění aplikace. Je příležitost zpracovat odpověď od zprostředkovatele a dokončit proces ověřování, který MSAL.NET spustil.

Krok 3: Nastavení uiViewController()

Pro Xamarin iOS obvykle nemusíte nastavovat okno objektu. V tomto případě byste ho ale měli nastavit tak, abyste mohli odesílat a přijímat odpovědi od zprostředkovatele. Chcete-li nastavit okno objektu, v AppDelegate.cs, nastavíte ViewController.

Chcete-li nastavit okno objektu, postupujte takto:

  1. Nastavte AppDelegate.csApp.RootViewController na novou UIViewController()hodnotu . Toto nastavení zajišťuje, že volání do zprostředkovatele zahrnuje UIViewController. Pokud není správně nastavená, může se zobrazit tato chyba:

    "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 Na volání použijte .WithParentActivityOrWindow(App.RootViewController). Předejte odkaz na okno objektu, které použijete. Tady je příklad:

    V App.cs:

       public static object RootViewController { get; set; }
    

    V AppDelegate.cs:

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

    AcquireToken Ve volání:

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

Krok 4: Registrace schématu adres URL

MSAL.NET používá adresy URL k vyvolání zprostředkovatele a vrácení odpovědi zprostředkovatele zpět do vaší aplikace. Pokud chcete dokončit zpáteční cestu, zaregistrujte v Info.plist souboru schéma adresy URL vaší aplikace.

Pokud chcete zaregistrovat schéma adres URL vaší aplikace, postupujte takto:

  1. Předpona s msauth.CFBundleURLSchemes

  2. Přidejte CFBundleURLName na konec. Postupujte podle tohoto vzoru:

    $"msauth.(BundleId)"

    BundleId Tady jednoznačně identifikuje vaše zařízení. Pokud je yourcompany.xformsnapříklad BundleId , vaše schéma url je msauth.com.yourcompany.xforms.

    Toto schéma adres URL se stane součástí identifikátoru URI přesměrování, který jednoznačně identifikuje vaši aplikaci, když obdrží odpověď zprostředkovatele.

     <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>
    

Krok 5: Přidání do části LSApplicationQueriesSchemes

Nástroj MSAL používá –canOpenURL: ke kontrole, jestli je na zařízení nainstalovaný zprostředkovatel. V iOSu 9 společnost Apple uzamkne schémata, na která se aplikace může dotazovat.

Přidejte msauthv2 do LSApplicationQueriesSchemes části souboru, jak je znázorněno v následujícím příkladu Info.plist kódu:

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

Zprostředkované ověřování pro MSAL pro iOS a macOS

Zprostředkované ověřování je ve výchozím nastavení povolené pro scénáře Microsoft Entra.

Krok 1: Aktualizace AppDelegate pro zpracování zpětného volání

Když MSAL pro iOS a macOS volá zprostředkovatele, zprostředkovatel volá zpět do vaší aplikace pomocí openURL metody. Vzhledem k tomu, že SLUŽBA MSAL čeká na odpověď od zprostředkovatele, musí vaše aplikace spolupracovat na volání knihovny MSAL. Tuto funkci nastavte tak, že aktualizujete AppDelegate.m soubor tak, aby přepsaly metodu, jak ukazuje následující příklady kódu.

- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    return [MSALPublicClientApplication handleMSALResponse:url
                                         sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]];
}
    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {

        guard let sourceApplication = options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String else {
            return false
        }

        return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApplication)
    }

Pokud jste přijali UISceneDelegate iOS 13 nebo novější, umístěte zpětné volání MSAL místo scene:openURLContexts:UISceneDelegate toho. Knihovna MSAL handleMSALResponse:sourceApplication: musí být volána pouze jednou pro každou adresu URL.

Další informace najdete v dokumentaci společnosti Apple.

Krok 2: Registrace schématu adres URL

MSAL pro iOS a macOS používá adresy URL k vyvolání zprostředkovatele a následné vrácení odpovědi zprostředkovatele do vaší aplikace. Pokud chcete dokončit zpáteční cestu, zaregistrujte v Info.plist souboru schéma adres URL pro vaši aplikaci.

Postup registrace schématu pro aplikaci:

  1. Předpona vlastního schématu url pomocí msauth.

  2. Přidejte identifikátor sady na konec schématu. Postupujte podle tohoto vzoru:

    $"msauth.(BundleId)"

    BundleId Tady jednoznačně identifikuje vaše zařízení. Pokud je yourcompany.xformsnapříklad BundleId , vaše schéma url je msauth.com.yourcompany.xforms.

    Toto schéma adres URL se stane součástí identifikátoru URI přesměrování, který jednoznačně identifikuje vaši aplikaci, když obdrží odpověď zprostředkovatele. Ujistěte se, že je identifikátor URI přesměrování ve formátu msauth.(BundleId)://auth zaregistrovaný pro vaši aplikaci.

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>msauth.[BUNDLE_ID]</string>
            </array>
        </dict>
    </array>
    

Krok 3: Přidání LSApplicationQueriesSchemes

Pokud je aplikace Microsoft Authenticator nainstalovaná, přidejte LSApplicationQueriesSchemes ji, abyste povolili volání.

Poznámka:

Schéma msauthv3 je potřeba při kompilaci aplikace pomocí Xcode 11 a novějšího.

Tady je příklad přidání LSApplicationQueriesSchemes:

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

Zprostředkované ověřování pro Xamarin.Android

Informace o povolení zprostředkovatele v Androidu najdete v tématu Zprostředkované ověřování v Xamarin.Android.

Další kroky

Přejděte k dalšímu článku v tomto scénáři a získání tokenu.