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 GitHub |
Balíček | Dostání 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 | GA | ||
Android (Kotlin) | MSAL Android | MSAL | — | GA | ||
iOS (Swift/Obj-C) | MSAL pro iOS a macOS | MSAL | Kurz | GA | ||
Xamarin (.NET) | MSAL.NET | Microsoft.Identity.Client | — | GA |
1 Univerzá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.
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 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 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:
- Implementace zpětného
openURL
volání - Povolení přístupových skupin řetězce 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 ovládací prvek po skončení interaktivní části toku ověřování 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 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:
Nastavte
AppDelegate.cs
App.RootViewController
na novouUIViewController()
hodnotu . 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();
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:
Předpona s
msauth
.CFBundleURLSchemes
Přidejte
CFBundleURLName
na konec. Postupujte podle tohoto vzoru:$"msauth.(BundleId)"
BundleId
Tady jednoznačně identifikuje vaše zařízení. Pokud jeyourcompany.xforms
napříkladBundleId
, 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 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:
Předpona vlastního 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 jeyourcompany.xforms
napříkladBundleId
, 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ř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.