Konfigurace mobilní aplikace, která volá webová rozhraní API
platí pro: pracovní síla
externí nájemníci (další informace)
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 | Projekt na GitHub |
Balíček | Dostání začal |
Přihlášení uživatelů | Přístup k webovým rozhraním API | Obecná dostupnost (GA) nebo Veřejná ukázka1 |
---|---|---|---|---|---|---|
Android (Java) | MSAL Android | MSAL | Rychlý start |
![]() |
![]() |
GA |
Android (Kotlin) | MSAL Android | MSAL | — |
![]() |
![]() |
GA |
iOS (Swift/Obj-C) | MSAL pro iOS a macOS | MSAL | Návod |
![]() |
![]() |
GA |
Xamarin (.NET) | MSAL.NET | Microsoft.Identity.Client | — |
![]() |
![]() |
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 na iOSu musí vytvořit instanci třídy MSALPublicClientApplication
. 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 objektu MSALPublicClientApplicationConfig mohou přepsat výchozí autoritu, zadat přesměrování URI nebo změnit, jak se MSAL tokeny ukládají do mezipaměti.
Xamarin nebo UPW
Tato část vysvětluje, jak vytvořit instanci aplikace pro aplikace Xamarin.iOS, Xamarin.Android a UPW.
Poznámka:
MSAL.NET verze 4.61.0 a vyšší neposkytují podporu pro Univerzální platforma Windows (UPW), Xamarin Android a Xamarin iOS. Doporučujeme migrovat aplikace Xamarinu do moderních architektur, jako je MAUI. Přečtěte si další informace o vyřazení v Oznámení nadcházejícího vyřazení MSAL.NET pro Xamarin a UWP.
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í prostředky uživatelského rozhraní, překonají výchozí autoritu, určí název klienta a verzi pro telemetrii, určí URI pro přesměrování a specifikují HTTP továrnu, kterou lze 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.
Specifikujte hlavní uživatelské rozhraní, okno nebo aktivitu
Na Androidu předejte nadřazenou aktivitu před interaktivním ověřováním. V iOSu, když používáte zprostředkovatele, pass-in ViewController
. Podobně jako na UWP 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ý 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 PublicClientApplicationBuilder
naleznete v seznamu Metody.
Popis všech možností, které jsou vystaveny, naleznete v PublicClientApplicationOptions
referenční dokumentaci.
Úlohy pro MSAL pro iOS a macOS
Tyto úlohy jsou nezbytné, když používáte MSAL pro iOS a macOS:
-
Implementujte zpětné
openURL
volání - Povolit skupiny přístupu k řetězci klíčů
- Přizpůsobení prohlížečů a webových zobrazení
Úlohy pro Xamarin.Android
Pokud používáte Xamarin.Android, proveďte následující úlohy:
- Ujistěte se, že se řízení po skončení interaktivní části autentizačního toku vrátí zpět do MSAL.
- Aktualizace manifestu Androidu
- Použití vloženého webového zobrazení (volitelné)
- Řešení potíží podle potřeby
Další informace najdete v tématu Úvahy pro 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 UWP
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, odevzdá adresu URL k 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.
Povolte zprostředkovatele pro MSAL pro Androidu
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ředkovatel pak zavolá 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. Jak ukazuje následující kód, toto chování nastavíte aktualizací souboru AppDelegate.cs
tak, aby přepsal metodu.
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:
Nastavte
AppDelegate.cs
App.RootViewController
na novouUIViewController()
. Toto nastavení zajišťuje, že volání do zprostředkovatele zahrnujeUIViewController
. 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."
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();
Ve volání
AcquireToken
:result = await app.AcquireTokenInteractive(scopes) .WithParentActivityOrWindow(App.RootViewController) .ExecuteAsync();
Krok 4: Zaregistrujte schéma 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:
Před
CFBundleURLSchemes
dejtemsauth
.Přidejte
CFBundleURLName
na konec. Postupujte podle tohoto vzoru:$"msauth.(BundleId)"
BundleId
Tady jednoznačně identifikuje vaše zařízení. Pokud jeBundleId
napříkladyourcompany.xforms
, vaše schéma url jemsauth.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 MSAL čeká na odpověď od zprostředkovatele, musí vaše aplikace spolupracovat, aby se vrátila k 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 začali používat UISceneDelegate
na iOS 13 nebo novějším, umístěte zpětné volání MSAL do scene:openURLContexts:
v UISceneDelegate
místo 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:
Přidejte předponu ke svému vlastnímu schématu URL pomocí
msauth
.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 napříkladBundleId
yourcompany.xforms
, vaše schéma URL jemsauth.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řidejte LSApplicationQueriesSchemes
Pokud je aplikace Microsoft Authenticator nainstalovaná, přidejte LSApplicationQueriesSchemes
, 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, Získání tokenu.