Migrace aplikací do MSAL pro iOS a macOS
Byla vytvořena knihovna Azure Active Directory Authentication Library (ADAL Objective-C) pro práci s účty Microsoft Entra prostřednictvím koncového bodu verze 1.0.
Knihovna Microsoft Authentication Library pro iOS a macOS (MSAL) je vytvořená tak, aby fungovala se všemi identitami Microsoftu, jako jsou účty Microsoft Entra, osobní účty Microsoft a účty Azure AD B2C, prostřednictvím Microsoft identity platform (formálně se jedná o koncový bod Azure AD v2.0).
Microsoft identity platform má několik klíčových rozdílů od Azure AD verze 1.0. Tento článek tyto rozdíly zdůrazňuje a poskytuje pokyny k migraci aplikace z ADAL na MSAL.
Rozdíly ve schopnostech aplikací ADAL a MSAL
Kdo se může přihlásit
- ADAL podporuje jenom pracovní a školní účty , označované také jako účty Microsoft Entra.
- MSAL podporuje osobní účty Microsoft (účty MSA), jako jsou Hotmail.com, Outlook.com a Live.com.
- MSAL podporuje pracovní a školní účty a Azure AD účty B2C.
Dodržování standardů
- Microsoft identity platform se řídí standardy OAuth 2.0 a OpenId Connect.
Přírůstkový a dynamický souhlas
- Microsoft identity platform umožňuje požádat o oprávnění dynamicky. Aplikace můžou požádat o oprávnění jenom v případě potřeby a požádat o více, pokud je aplikace potřebuje. Další informace najdete v tématu Oprávnění a souhlas.
Rozdíly mezi knihovnami ADAL a MSAL
Veřejné rozhraní API MSAL odráží několik klíčových rozdílů mezi Azure AD v1.0 a Microsoft identity platform.
MSALPublicClientApplication místo ADAuthenticationContext
ADAuthenticationContext
je první objekt, který aplikace ADAL vytvoří. Představuje instanci knihovny ADAL. Aplikace vytvoří novou instanci pro každou kombinaci cloudu a tenanta ADAuthenticationContext
(autority) Microsoft Entra. Totéž ADAuthenticationContext
lze použít k získání tokenů pro více veřejných klientských aplikací.
V MSAL je hlavní interakce prostřednictvím objektu MSALPublicClientApplication
, který se modeluje podle veřejného klienta OAuth 2.0. Jedna instance MSALPublicClientApplication
se dá použít k interakci s více Microsoft Entra cloudy a tenanty, aniž by bylo nutné vytvořit novou instanci pro každou autoritu. Pro většinu aplikací stačí jedna MSALPublicClientApplication
instance.
Obory místo prostředků
V ADAL musela aplikace poskytnout identifikátor prostředku, jako je https://graph.microsoft.com
získání tokenů z koncového bodu Azure AD verze 1.0. Prostředek může definovat několik oborů (oAuth2Permissions) v manifestu aplikace, kterým rozumí. To klientským aplikacím umožnilo požadovat tokeny z tohoto prostředku pro určitou sadu oborů předdefinovaných během registrace aplikace.
V knihovně MSAL aplikace místo jednoho identifikátoru prostředku poskytují sadu oborů pro každý požadavek. Obor je identifikátor prostředku následovaný názvem oprávnění ve formuláři prostředek nebo oprávnění. Například https://graph.microsoft.com/user.read
.
Obory se v knihovně MSAL poskytují dvěma způsoby:
Zadejte seznam všech oprávnění, která vaše aplikace potřebují. Příklad:
@[@"https://graph.microsoft.com/directory.read", @"https://graph.microsoft.com/directory.write"]
V tomto případě aplikace požádá o
directory.read
oprávnění adirectory.write
. Uživatel bude požádán o souhlas s těmito oprávněními, pokud s nimi předtím pro tuto aplikaci nesouhlasil. Aplikace může také získat další oprávnění, se kterými už uživatel pro aplikaci souhlasil. Uživateli se zobrazí jenom výzva k udělení souhlasu s novými oprávněními nebo oprávněními, která nebyla udělena.Obor
/.default
.
Toto je integrovaný obor pro každou aplikaci. Odkazuje na statický seznam oprávnění nakonfigurovaných při registraci aplikace. Jeho chování je podobné chování jako u .resource
To může být užitečné při migraci, aby se zajistilo zachování podobné sady oborů a uživatelského prostředí.
Pokud chcete použít /.default
obor, připojte /.default
k identifikátoru prostředku. Příklad: https://graph.microsoft.com/.default
. Pokud váš prostředek končí lomítkem (/
), měli byste přesto připojit /.default
, včetně počátečního lomítka, což má za následek obor, který má dvojité lomítko (//
).
Další informace o použití oboru /.default si můžete přečíst tady.
Podpora různých typů & prohlížečů WebView
ADAL podporuje jenom UIWebView/WKWebView pro iOS a WebView pro macOS. MSAL pro iOS podporuje více možností pro zobrazení webového obsahu při žádosti o autorizační kód a už nepodporuje UIWebView
; což může zlepšit uživatelské prostředí a zabezpečení.
Ve výchozím nastavení používá MSAL v iOSu ASWebAuthenticationSession, což je webová komponenta, kterou Apple doporučuje k ověřování na zařízeních s iOSem 12+. Poskytuje výhody jednotného přihlašování prostřednictvím sdílení souborů cookie mezi aplikacemi a prohlížečem Safari.
V závislosti na požadavcích aplikace a požadovaném prostředí koncového uživatele se můžete rozhodnout použít jinou webovou komponentu. Další možnosti najdete v tématu Podporované typy webového zobrazení .
Při migraci z ADAL na MSAL poskytuje uživatelské prostředí, WKWebView
které se nejvíce podobá knihovně ADAL v iOSu a macOS. Pokud je to možné, doporučujeme migrovat na ASWebAuthenticationSession
iOS. Pro macOS doporučujeme použít WKWebView
.
Rozdíly v rozhraní API pro správu účtů
Při volání metod acquireToken()
ADAL nebo acquireTokenSilent()
obdržíte ADUserInformation
objekt obsahující seznam deklarací identity z id_token
účtu, který představuje ověřený účet. ADUserInformation
Navíc vrátí hodnotu založenou userId
na upn
deklaraci identity. Po počátečním získání interaktivního tokenu ADAL očekává, že vývojář bude poskytovat userId
všechna bezobslužná volání.
ADAL neposkytuje rozhraní API pro načtení známých identit uživatelů. Při ukládání a správě těchto účtů spoléhá na aplikaci.
MSAL poskytuje sadu rozhraní API pro výpis všech účtů známých pro MSAL bez nutnosti získat token.
Podobně jako ADAL vrátí MSAL informace o účtu, který obsahuje seznam deklarací identity z id_token
. Je součástí objektu MSALAccount
uvnitř objektu MSALResult
.
MSAL poskytuje sadu rozhraní API pro odebrání účtů, díky čemuž jsou odebrané účty pro aplikaci nedostupné. Po odebrání účtu se pozdější volání získání tokenu vyzve uživatele k interaktivnímu získání tokenu. Odebrání účtu se vztahuje jenom na klientskou aplikaci, která ho spustila, a neodebere účet z ostatních aplikací spuštěných na zařízení nebo ze systémového prohlížeče. Tím se zajistí, že uživatel bude mít na zařízení i po odhlášení z jednotlivé aplikace možnost jednotného přihlašování.
Kromě toho MSAL také vrátí identifikátor účtu, který lze použít k vyžádání tokenu bezobslužně později. Identifikátor účtu (přístupný prostřednictvím identifier
vlastnosti v objektu MSALAccount
) se ale nedá zobrazit a nemůžete předpokládat, v jakém formátu se nachází, ani byste se ho neměli pokoušet interpretovat nebo parsovat.
Migrace mezipaměti účtu
Při migraci z knihovny ADAL aplikace obvykle ukládají knihovnu userId
ADAL, která nemá identifier
požadované knihovnou MSAL. V rámci jednorázového kroku migrace se aplikace může dotazovat na účet MSAL pomocí userId knihovny ADAL s následujícím rozhraním API:
- (nullable MSALAccount *)accountForUsername:(nonnull NSString *)username error:(NSError * _Nullable __autoreleasing * _Nullable)error;
Toto rozhraní API načte mezipaměť KNIHOVNY MSAL i ADAL a vyhledá účet podle ADAL userId (UPN).
Pokud se účet najde, vývojář by ho měl použít k získání tichého tokenu. První získání tichého tokenu efektivně upgraduje účet a vývojář získá identifikátor účtu kompatibilního se službou MSAL ve výsledku MSAL (identifier
). Poté by se měl používat pouze identifier
pro vyhledávání účtů pomocí následujícího rozhraní API:
- (nullable MSALAccount *)accountForIdentifier:(nonnull NSString *)identifier error:(NSError * _Nullable __autoreleasing * _Nullable)error;
I když je možné dál používat knihovny ADAL userId
pro všechny operace v knihovně MSAL, protože userId
je založená na hlavním názvu uživatele (UPN), podléhá několik omezení, která vedou ke špatnému uživatelskému prostředí. Pokud se například hlavní název uživatele (UPN) změní, musí se uživatel znovu přihlásit. Pro všechny operace doporučujeme, aby všechny aplikace používaly účet, který se nezobrazuje identifier
.
Přečtěte si další informace o migraci stavu mezipaměti.
Změny získávání tokenů
MSAL zavádí některé změny volání získání tokenu:
- Stejně jako ADAL vždy
acquireTokenSilent
vede k tichému požadavku. - Na rozdíl od knihovny ADAL vždy vede k uživatelskému rozhraní s
acquireToken
možností akce prostřednictvím webového zobrazení nebo aplikace Microsoft Authenticator. V závislosti na stavu jednotného přihlašování ve webview nebo Microsoft Authenticatoru se uživateli může zobrazit výzva k zadání přihlašovacích údajů. - V ADAL se první pokus o získání tichého tokenu a zobrazí uživatelské rozhraní pouze v případě,
acquireToken
AD_PROMPT_AUTO
že tichý požadavek selže. V MSAL lze tuto logiku dosáhnout prvním volánímacquireTokenSilent
a volánímacquireToken
pouze v případě selhání tichého získání. To vývojářům umožňuje přizpůsobit uživatelské prostředí před zahájením interaktivního získávání tokenů.
Rozdíly při zpracování chyb
MSAL poskytuje větší přehled mezi chybami, které může vaše aplikace zpracovat, a chybami, které vyžadují zásah uživatele. Vývojář musí zpracovat omezený počet chyb:
MSALErrorInteractionRequired
: Uživatel musí provést interaktivní požadavek. Může to být způsobeno různými důvody, například kvůli relaci ověřování, které vypršela, změně zásad podmíněného přístupu, vypršení platnosti nebo odvolání obnovovacího tokenu, v mezipaměti nejsou žádné platné tokeny atd.MSALErrorServerDeclinedScopes
: Žádost se úplně nedokončila a některým oborům se neudělil přístup. Příčinou může být odmítnutí souhlasu uživatele s jedním nebo více obory.
Zpracování všech ostatních chyb v MSALError
seznamu je volitelné. Informace v těchto chybách můžete použít ke zlepšení uživatelského prostředí.
Další informace o zpracování chyb MSAL najdete v tématu Zpracování výjimek a chyb pomocí knihovny MSAL .
Podpora zprostředkovatele
MSAL, počínaje verzí 0.3.0, poskytuje podporu pro zprostředkované ověřování pomocí aplikace Microsoft Authenticator. Microsoft Authenticator také umožňuje podporu scénářů podmíněného přístupu. Mezi příklady scénářů podmíněného přístupu patří zásady dodržování předpisů zařízením, které vyžadují, aby uživatel zaregistroval zařízení prostřednictvím Intune nebo se zaregistroval s Microsoft Entra ID, aby získal token. A zásady podmíněného přístupu ke správě mobilních aplikací (MAM), které před získáním tokenu vyžadují doklad o dodržování předpisů.
Povolení zprostředkovatele pro vaši aplikaci:
Zaregistrujte pro aplikaci formát identifikátoru URI přesměrování kompatibilní s zprostředkovatelem. Formát identifikátoru URI přesměrování kompatibilní s zprostředkovatelem je
msauth.<app.bundle.id>://auth
. Nahraďte<app.bundle.id>
ID sady vaší aplikace. Pokud migrujete z knihovny ADAL a vaše aplikace už byla schopná zprostředkovatele, nemusíte dělat nic navíc. Váš předchozí identifikátor URI přesměrování je plně kompatibilní se službou MSAL, takže můžete přeskočit ke kroku 3.Přidejte schéma identifikátoru URI přesměrování vaší aplikace do souboru info.plist. Výchozí identifikátor URI přesměrování MSAL má
msauth.<app.bundle.id>
formát . Příklad:<key>CFBundleURLSchemes</key> <array> <string>msauth.<app.bundle.id></string> </array>
Do seznamu Info.plist vaší aplikace v části LSApplicationQueriesSchemes přidejte následující schémata:
<key>LSApplicationQueriesSchemes</key> <array> <string>msauthv2</string> <string>msauthv3</string> </array>
Do souboru AppDelegate.m přidejte pro zpracování zpětných volání následující: Objective-C:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options` { return [MSALPublicClientApplication handleMSALResponse:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]]; }
Swift:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String) }
B2B (Business to business)
V ADAL vytvoříte samostatné instance pro každého tenanta ADAuthenticationContext
, pro kterého aplikace požaduje tokeny. V knihovně MSAL už to není požadavek. V MSAL můžete vytvořit jednu instanci MSALPublicClientApplication
a použít ji pro jakýkoli Microsoft Entra cloud a organizaci zadáním jiné autority pro volání acquireToken a acquireTokenSilent.
Jednotné přihlašování ve spolupráci s dalšími sadami SDK
MSAL pro iOS může dosáhnout jednotného přihlašování prostřednictvím sjednocené mezipaměti s následujícími sadami SDK:
- ADAL Objective-C 2.7.x+
- MSAL.NET pro Xamarin 2.4.x+
- ADAL.NET pro Xamarin 4.4.x+
Jednotné přihlašování se dosahuje prostřednictvím sdílení řetězce klíčů iOS a je k dispozici pouze mezi aplikacemi publikovanými ze stejného účtu Apple Developer.
Jednotné přihlašování prostřednictvím sdílení řetězce klíčů v iOSu je jediným bezobslužným typem jednotného přihlašování.
V systému macOS může MSAL dosáhnout jednotného přihlašování s jinými nástroji MSAL pro aplikace založené na iOS a macOS a aplikacemi založenými na ADAL Objective-C.
MSAL v iOSu podporuje také dva další typy jednotného přihlašování:
- Jednotné přihlašování prostřednictvím webového prohlížeče. MSAL pro iOS podporuje
ASWebAuthenticationSession
, který poskytuje jednotné přihlašování prostřednictvím souborů cookie sdílených mezi jinými aplikacemi na zařízení a konkrétně prohlížečem Safari. - Jednotné přihlašování prostřednictvím zprostředkovatele ověřování. Na zařízení s iOSem funguje Microsoft Authenticator jako zprostředkovatel ověřování. Může se řídit zásadami podmíněného přístupu, jako je vyžadování kompatibilního zařízení, a poskytuje jednotné přihlašování pro registrovaná zařízení. Sady MSAL SDK počínaje verzí 0.3.0 ve výchozím nastavení podporují zprostředkovatele.
sada INTUNE MAM SDK
Sada Intune MAM SDK podporuje MSAL pro iOS od verze 11.1.2.
MSAL a ADAL ve stejné aplikaci
ADAL verze 2.7.0 a vyšší nemůže ve stejné aplikaci existovat společně s knihovnou MSAL. Hlavním důvodem je společný kód sdíleného dílčího modulu. Vzhledem k tomu, že Objective-C nepodporuje obory názvů, přidáte-li do aplikace rozhraní ADAL i MSAL, budou existovat dvě instance stejné třídy. Neexistuje žádná záruka, pro kterou se vybere za běhu. Pokud obě sady SDK používají stejnou verzi konfliktní třídy, může vaše aplikace stále fungovat. Pokud se ale jedná o jinou verzi, může docházet k neočekávaným chybám, která se obtížně diagnostikují.
Spouštění ADAL a MSAL ve stejné produkční aplikaci se nepodporuje. Pokud ale jenom testujete a migrujete uživatele z ADAL Objective-C na MSAL pro iOS a macOS, můžete dál používat ADAL Objective-C 2.6.10. Je to jediná verze, která funguje se službou MSAL ve stejné aplikaci. Pro tuto verzi knihovny ADAL nebudou k dispozici žádné nové aktualizace funkcí, takže by se měla používat jenom pro účely migrace a testování. Vaše aplikace by neměla spoléhat na dlouhodobé koexistence ADAL a MSAL.
Koexistence ADAL a MSAL ve stejné aplikaci není podporovaná. Koexistence ADAL a MSAL mezi více aplikacemi je plně podporovaná.
Praktické kroky migrace
Migrace registrace aplikací
Abyste mohli přepnout na MSAL a povolit Microsoft Entra účty, nemusíte měnit stávající aplikaci Microsoft Entra. Pokud ale vaše aplikace založená na ADAL nepodporuje zprostředkované ověřování, budete muset pro aplikaci zaregistrovat nový identifikátor URI přesměrování, abyste mohli přejít na MSAL.
Identifikátor URI přesměrování by měl být v tomto formátu: msauth.<app.bundle.id>://auth
. Nahraďte <app.bundle.id>
ID sady vaší aplikace. V Centru pro správu Microsoft Entra zadejte identifikátor URI přesměrování.
Pouze pro iOS, aby bylo možné podporovat ověřování založené na certifikátech, musí být v aplikaci a v centru pro správu Microsoft Entra zaregistrovaný další identifikátor URI přesměrování v následujícím formátu: msauth://code/<broker-redirect-uri-in-url-encoded-form>
. Například msauth://code/msauth.com.microsoft.mybundleId%3A%2F%2Fauth
.
Doporučujeme, aby všechny aplikace zaregistrovaly obě identifikátory URI přesměrování.
Pokud chcete přidat podporu pro přírůstkový souhlas, na kartě Oprávnění rozhraní API vyberte rozhraní API a oprávnění, ke které je vaše aplikace nakonfigurovaná tak, aby vyžadovala přístup k registraci aplikace.
Pokud migrujete z knihovny ADAL a chcete podporovat Microsoft Entra ID i účty MSA, je potřeba aktualizovat stávající registraci aplikace tak, aby podporovala obojí. Nedoporučujeme okamžitě aktualizovat stávající produkční aplikaci tak, aby podporovala ID Microsoft Entra i MSA. Místo toho vytvořte další ID klienta, které podporuje ID Microsoft Entra i MSA pro testování, a po ověření, že všechny scénáře fungují, aktualizujte stávající aplikaci.
Přidání MSAL do aplikace
Sadu MSAL SDK můžete do aplikace přidat pomocí preferovaného nástroje pro správu balíčků. Podrobné pokyny najdete tady.
Aktualizace souboru Info.plist aplikace
Pouze pro iOS přidejte schéma identifikátoru URI přesměrování vaší aplikace do souboru info.plist. U aplikací kompatibilních se zprostředkovatelem ADAL by už měl existovat. Výchozí schéma identifikátoru URI přesměrování MSAL bude ve formátu : msauth.<app.bundle.id>
.
<key>CFBundleURLSchemes</key>
<array>
<string>msauth.<app.bundle.id></string>
</array>
Do seznamu Info.plist vaší aplikace v části LSApplicationQueriesSchemes
přidejte následující schémata.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
<string>msauthv3</string>
</array>
Aktualizace kódu AppDelegate
Jenom pro iOS přidejte do souboru AppDelegate.m následující:
Objective-C:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options`
{
return [MSALPublicClientApplication handleMSALResponse:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]];
}
Swift:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
}
Pokud používáte Xcode 11, měli byste do SceneDelegate
souboru umístit zpětné volání MSAL.
Pokud podporujete jak UISceneDelegate, tak UIApplicationDelegate z důvodu kompatibility se starším iOSem, bude potřeba do obou souborů umístit zpětné volání MSAL.
Objective-C:
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts
{
UIOpenURLContext *context = URLContexts.anyObject;
NSURL *url = context.URL;
NSString *sourceApplication = context.options.sourceApplication;
[MSALPublicClientApplication handleMSALResponse:url sourceApplication:sourceApplication];
}
Swift:
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let urlContext = URLContexts.first else {
return
}
let url = urlContext.url
let sourceApp = urlContext.options.sourceApplication
MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApp)
}
To umožňuje knihovně MSAL zpracovávat odpovědi zprostředkovatele a webové komponenty. V ADAL to nebylo nutné, protože automaticky "otočil" metody delegáta aplikace. Ruční přidání je méně náchylné k chybám a dává aplikaci větší kontrolu.
Povolení ukládání tokenů do mezipaměti
Ve výchozím nastavení MSAL ukládá tokeny vaší aplikace do mezipaměti v klíči iOS nebo macOS.
Povolení ukládání tokenů do mezipaměti:
- Ujistěte se, že je vaše aplikace správně podepsaná.
- Přejděte na kartu> Možnosti nastavení > projektu XcodePovolit sdílení řetězce klíčů.
- Klikněte na + a zadejte následující položku Skupiny řetězce klíčů : 3.a Pro iOS zadejte
com.microsoft.adalcache
3.b Pro macOS zadejte.com.microsoft.identity.universalstorage
Vytvořte MSALPublicClientApplication a přepněte na její volání acquireToken a acquireTokeSilent.
Můžete vytvořit MSALPublicClientApplication
pomocí následujícího kódu:
Objective-C:
NSError *error = nil;
MSALPublicClientApplicationConfig *configuration = [[MSALPublicClientApplicationConfig alloc] initWithClientId:@"<your-client-id-here>"];
MSALPublicClientApplication *application =
[[MSALPublicClientApplication alloc] initWithConfiguration:configuration
error:&error];
Swift:
let config = MSALPublicClientApplicationConfig(clientId: "<your-client-id-here>")
do {
let application = try MSALPublicClientApplication(configuration: config)
// continue on with application
} catch let error as NSError {
// handle error here
}
Pak zavolejte rozhraní API pro správu účtů a zjistěte, jestli v mezipaměti nejsou nějaké účty:
Objective-C:
NSString *accountIdentifier = nil /*previously saved MSAL account identifier */;
NSError *error = nil;
MSALAccount *account = [application accountForIdentifier:accountIdentifier error:&error];
Swift:
// definitions that need to be initialized
let application: MSALPublicClientApplication!
let accountIdentifier: String! /*previously saved MSAL account identifier */
do {
let account = try application.account(forIdentifier: accountIdentifier)
// continue with account usage
} catch let error as NSError {
// handle error here
}
nebo si přečtěte všechny účty:
Objective-C:
NSError *error = nil;
NSArray<MSALAccount *> *accounts = [application allAccounts:&error];
Swift:
let application: MSALPublicClientApplication!
do {
let accounts = try application.allAccounts()
// continue with account usage
} catch let error as NSError {
// handle error here
}
Pokud se účet najde, zavolejte rozhraní MSAL acquireTokenSilent
API:
Objective-C:
MSALSilentTokenParameters *silentParameters = [[MSALSilentTokenParameters alloc] initWithScopes:@[@"<your-resource-here>/.default"] account:account];
[application acquireTokenSilentWithParameters:silentParameters
completionBlock:^(MSALResult *result, NSError *error)
{
if (result)
{
NSString *accessToken = result.accessToken;
// Use your token
}
else
{
// Check the error
if ([error.domain isEqual:MSALErrorDomain] && error.code == MSALErrorInteractionRequired)
{
// Interactive auth will be required
}
// Other errors may require trying again later, or reporting authentication problems to the user
}
}];
Swift:
let application: MSALPublicClientApplication!
let account: MSALAccount!
let silentParameters = MSALSilentTokenParameters(scopes: ["<your-resource-here>/.default"],
account: account)
application.acquireTokenSilent(with: silentParameters) {
(result: MSALResult?, error: Error?) in
if let accessToken = result?.accessToken {
// use accessToken
}
else {
// Check the error
guard let error = error else {
assert(true, "callback should contain a valid result or error")
return
}
let nsError = error as NSError
if (nsError.domain == MSALErrorDomain
&& nsError.code == MSALError.interactionRequired.rawValue) {
// Interactive auth will be required
}
// Other errors may require trying again later, or reporting authentication problems to the user
}
}
Další kroky
Další informace o tocích ověřování a scénářích aplikací