Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per l'autenticazione interattiva è necessario un Web browser. In iOS e macOS 10.15+, il Libreria di Autenticazione Microsoft (MSAL) usa il Web browser di sistema per impostazione predefinita (che potrebbe apparire sopra l'app) per eseguire l'autenticazione interattiva per consentire agli utenti di accedere. L'uso del browser di sistema offre il vantaggio di condividere lo stato dell'accesso Single Sign-On (SSO) con altre applicazioni e con applicazioni Web.
È possibile modificare l'esperienza personalizzando la configurazione con altre opzioni per la visualizzazione del contenuto Web, ad esempio:
Solo per iOS:
Per iOS e macOS:
MSAL per macOS supporta WKWebView solo nelle versioni precedenti del sistema operativo.
ASWebAuthenticationSession è supportato solo in macOS 10.15 e versioni successive.
Browser di sistema
Per iOS, ASWebAuthenticationSession, SFAuthenticationSessione SFSafariViewController sono considerati browser di sistema. Per macOS, è disponibile solo ASWebAuthenticationSession . In generale, i browser di sistema condividono cookie e altri dati del sito Web con l'applicazione browser Safari.
Per impostazione predefinita, MSAL rileverà dinamicamente la versione di iOS e selezionerà il browser di sistema consigliato disponibile in tale versione. In iOS 12+ sarà ASWebAuthenticationSession.
Configurazione predefinita per iOS
| Versione | navigatore web |
|---|---|
| iOS 12+ | ASWebAuthenticationSession |
| iOS 11 | SFAuthenticationSession |
| iOS 10 | SFSafariViewController |
Configurazione predefinita per macOS
| Versione | navigatore web |
|---|---|
| macOS 10.15+ | ASWebAuthenticationSession |
| altre versioni | WKWebView |
Gli sviluppatori possono anche selezionare un browser di sistema diverso per le app MSAL:
-
SFAuthenticationSessionè la versione iOS 11 diASWebAuthenticationSession. -
SFSafariViewControllerè più generico e fornisce un'interfaccia per l'esplorazione del Web e può essere usata anche a scopo di accesso. In iOS 9 e 10 i cookie e altri dati del sito Web vengono condivisi con Safari, ma non in iOS 11 e versioni successive.
browser integrato nell'app
WKWebView è un browser in-app che visualizza il contenuto Web. Non condivide i cookie o i dati del sito Web con altre istanze di WKWebView o con il browser Safari. WKWebView è un browser multipiattaforma disponibile sia per iOS che per macOS.
Implicazioni della condivisione dei cookie e dell'SSO
Il browser usato influisce sull'esperienza SSO a causa del modo in cui condividono i cookie. Le tabelle seguenti riepilogano le esperienze SSO per browser.
| Tecnologia | Tipo di browser | Disponibilità di iOS | Disponibilità di macOS | Condivide cookie e altri dati | Disponibilità MSAL | SSO (Autenticazione Unica) |
|---|---|---|---|---|---|---|
| ASWebAuthenticationSession | System | iOS 12 e versioni successive | macOS 10.15 e versioni successive | Sì | iOS e macOS 10.15+ | con istanze di Safari |
| SFAuthenticationSession | System | iOS11 e versioni successive | N/A | Sì | Solo per iOS | con istanze di Safari |
| SFSafariViewController | System | iOS11 e versioni successive | N/A | No | Solo per iOS | No** |
| SFSafariViewController | System | iOS10 | N/A | Sì | Solo per iOS | con istanze di Safari |
| WKWebView | In-app | iOS 8 e versioni successive | macOS 10.10 e versioni successive | No | iOS e macOS | No** |
** Per il funzionamento dell'accesso Single Sign-On, i token devono essere condivisi tra le app. Ciò richiede una cache dei token o un'applicazione broker, ad esempio Microsoft Authenticator per iOS.
Modificare il browser predefinito per la richiesta
È possibile usare un browser in-app o un browser di sistema specifico a seconda dei requisiti dell'esperienza utente modificando la proprietà seguente in MSALWebviewParameters:
@property (nonatomic) MSALWebviewType webviewType;
Modifica per richiesta interattiva
Ogni richiesta può essere configurata per eseguire l'override del browser predefinito modificando la MSALInteractiveTokenParameters.webviewParameters.webviewType proprietà prima di passarla all'API acquireTokenWithParameters:completionBlock: .
Inoltre, MSAL consente di passare un WKWebView personalizzato impostando la proprietà MSALInteractiveTokenParameters.webviewParameters.customWebView.
Per esempio:
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)
Se si usa una visualizzazione Web personalizzata, le notifiche vengono usate per indicare lo stato del contenuto Web visualizzato, ad esempio:
/*! 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;
Options
Tutti i tipi di Web browser supportati da MSAL vengono dichiarati nell'enumerazione 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,
};
Passaggi successivi
Altre informazioni sui flussi di autenticazione e sugli scenari dell'applicazione