Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pro interaktivní ověřování se vyžaduje webový prohlížeč. V iOSu a macOS 10.15+používá Identity a ověřování Microsoftu (MSAL) ve výchozím nastavení systémový webový prohlížeč (který se může objevit nad vaší aplikací) k interaktivnímu ověřování pro přihlášení uživatelů. Použití systémového prohlížeče má výhodu sdílení stavu jednotného přihlašování (SSO) s jinými aplikacemi a webovými aplikacemi.
Prostředí můžete změnit přizpůsobením konfigurace na další možnosti zobrazení webového obsahu, například:
Pouze pro iOS:
Pro iOS a macOS:
MSAL pro macOS podporuje WKWebView jenom starší verze operačního systému.
ASWebAuthenticationSession je podporován pouze v macOS 10.15 a novějších.
Systémové prohlížeče
Pro iOS, ASWebAuthenticationSession, SFAuthenticationSessiona SFSafariViewController jsou považovány za systémové prohlížeče. Pro macOS je k dispozici pouze ASWebAuthenticationSession . Obecně platí, že systémové prohlížeče sdílejí soubory cookie a další data webových stránek s aplikací prohlížeče Safari.
Ve výchozím nastavení MSAL dynamicky rozpozná verzi systému iOS a vybere doporučený systémový prohlížeč dostupný pro danou verzi. V iOSu 12+ to bude ASWebAuthenticationSession.
Výchozí konfigurace pro iOS
| Version | webový prohlížeč |
|---|---|
| iOS 12 a novější | ASWebAuthenticationSession |
| iOS 11 | SFAuthenticationSession |
| iOS 10 | SFSafariViewController |
Výchozí konfigurace pro macOS
| Version | webový prohlížeč |
|---|---|
| macOS 10.15+ | ASWebAuthenticationSession |
| jiné verze | WKWebView |
Vývojáři můžou také vybrat jiný systémový prohlížeč pro aplikace MSAL:
-
SFAuthenticationSessionje iOS 11 verzeASWebAuthenticationSession. -
SFSafariViewControllerje obecnější a poskytuje rozhraní pro procházení webu a lze ho použít i pro účely přihlášení. V iOSu 9 a 10 se soubory cookie a další data webových stránek sdílí se safari, ale ne v iOSu 11 a novějším.
Prohlížeč v aplikaci
WKWebView je prohlížeč v aplikaci, který zobrazuje webový obsah. Nesdílí soubory cookie ani data webu s jinými instancemi WKWebView ani prohlížečem Safari. WKWebView je multiplatformní prohlížeč, který je k dispozici pro iOS i macOS.
Důsledky sdílení souborů cookie a SSO
Prohlížeč, který používáte, má vliv na prostředí jednotného přihlašování z důvodu toho, jak sdílejí soubory cookie. Následující tabulky shrnují fungování jednotného přihlašování pro jednotlivé prohlížeče.
| Technologie | Typ prohlížeče | Dostupnost iOSu | Dostupnost macOS | Sdílí soubory cookie a další data. | Dostupnost MSAL | jednotné přihlášení |
|---|---|---|---|---|---|---|
| ASWebAuthenticationSession | Systém | iOS12 a novější | macOS 10.15 a novější | Ano | iOS a macOS 10.15+ | instance se Safari |
| SFAuthenticationSession | Systém | iOS11 a novější | N/A | Ano | Jenom iOS | instance w/ Safari |
| SFSafariViewController | Systém | iOS11 a novější | N/A | No | Jenom iOS | Ne** |
| SFSafariViewController | Systém | iOS10 | N/A | Ano | Jenom iOS | s instancemi Safari |
| WKWebView | V aplikaci | iOS8 a novější | macOS 10.10 a novější | No | iOS a macOS | Ne** |
** Aby jednotné přihlašování fungovalo, musí se tokeny sdílet mezi aplikacemi. To vyžaduje mezipaměť tokenů nebo zprostředkovou aplikaci, například Microsoft Authenticator pro iOS.
Změna výchozího prohlížeče pro požadavek
V závislosti na vašich požadavcích na uživatelské prostředí můžete použít prohlížeč v aplikaci nebo konkrétní systémový prohlížeč tak, že změníte následující vlastnost v MSALWebviewParameters:
@property (nonatomic) MSALWebviewType webviewType;
Změna podle interaktivního požadavku
Každý požadavek lze nakonfigurovat tak, aby změnil výchozí prohlížeč úpravou vlastnosti MSALInteractiveTokenParameters.webviewParameters.webviewType před jeho předáním rozhraní API acquireTokenWithParameters:completionBlock:.
Kromě toho MSAL podporuje předání vlastní WKWebView nastavením vlastnosti MSALInteractiveTokenParameters.webviewParameters.customWebView.
Příklad:
Objective-C
UIViewController *myParentController = ...;
WKWebView *myCustomWebView = ...;
MSALWebviewParameters *webViewParameters = [[MSALWebviewParameters alloc] initWithAuthPresentationViewController:myParentController];
webViewParameters.webviewType = MSALWebviewTypeWKWebView;
webViewParameters.customWebview = myCustomWebView;
MSALInteractiveTokenParameters *interactiveParameters = [[MSALInteractiveTokenParameters alloc] initWithScopes:@[@"myscope"] webviewParameters:webViewParameters];
[app acquireTokenWithParameters:interactiveParameters completionBlock:completionBlock];
Swift
let myParentController: UIViewController = ...
let myCustomWebView: WKWebView = ...
let webViewParameters = MSALWebviewParameters(authPresentationViewController: myParentController)
webViewParameters.webviewType = MSALWebviewType.wkWebView
webViewParameters.customWebview = myCustomWebView
let interactiveParameters = MSALInteractiveTokenParameters(scopes: ["myscope"], webviewParameters: webViewParameters)
app.acquireToken(with: interactiveParameters, completionBlock: completionBlock)
Pokud používáte vlastní webové zobrazení, oznámení slouží k označení stavu zobrazeného webového obsahu, například:
/*! Fired at the start of a resource load in the webview. The URL of the load, if available, will be in the @"url" key in the userInfo dictionary */
extern NSString *MSALWebAuthDidStartLoadNotification;
/*! Fired when a resource finishes loading in the webview. */
extern NSString *MSALWebAuthDidFinishLoadNotification;
/*! Fired when web authentication fails due to reasons originating from the network. Look at the @"error" key in the userInfo dictionary for more details.*/
extern NSString *MSALWebAuthDidFailNotification;
/*! Fired when authentication finishes */
extern NSString *MSALWebAuthDidCompleteNotification;
/*! Fired before ADAL invokes the broker app */
extern NSString *MSALWebAuthWillSwitchToBrokerApp;
Možnosti
Všechny typy webových prohlížečů podporované knihovnou MSAL jsou deklarovány v výčtu MSALWebviewType.
typedef NS_ENUM(NSInteger, MSALWebviewType)
{
/**
For iOS 11 and up, uses AuthenticationSession (ASWebAuthenticationSession or SFAuthenticationSession).
For older versions, with AuthenticationSession not being available, uses SafariViewController.
For macOS 10.15 and above uses ASWebAuthenticationSession
For older macOS versions uses WKWebView
*/
MSALWebviewTypeDefault,
/** Use ASWebAuthenticationSession where available.
On older iOS versions uses SFAuthenticationSession
Doesn't allow any other webview type, so if either of these are not present, fails the request*/
MSALWebviewTypeAuthenticationSession,
#if TARGET_OS_IPHONE
/** Use SFSafariViewController for all versions. */
MSALWebviewTypeSafariViewController,
#endif
/** Use WKWebView */
MSALWebviewTypeWKWebView,
};
Další kroky
Další informace o tocích ověřování a scénářích aplikací