Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Webbrowser ist Voraussetzung für die interaktive Authentifizierung. Unter iOS und macOS 10.15+ verwendet das Microsoft Authentication Library (MSAL) (MSAL) standardmäßig den Systemwebbrowser (der möglicherweise über Ihrer App angezeigt wird), um interaktive Authentifizierung für die Anmeldung von Benutzern durchzuführen. Die Verwendung des Systembrowsers hat den Vorteil, den SSO-Zustand (Single Sign-On) mit anderen Anwendungen und webanwendungen zu teilen.
Sie können die Oberfläche ändern, indem Sie die Konfiguration auf andere Optionen zum Anzeigen von Webinhalten anpassen, z. B.:
Nur für iOS:
Für iOS und macOS:
MSAL für macOS unterstützt WKWebView nur unter älteren Betriebssystemversionen.
ASWebAuthenticationSession wird nur unter macOS 10.15 und höher unterstützt.
Systembrowser
Für iOS, ASWebAuthenticationSession, SFAuthenticationSessionund SFSafariViewController werden als Systembrowser betrachtet. Für macOS ist nur ASWebAuthenticationSession verfügbar. Im Allgemeinen teilen Systembrowser Cookies und andere Websitedaten mit der Safari-App.
Standardmäßig erkennt MSAL die iOS-Version dynamisch und wählt den empfohlenen Systembrowser aus, der in dieser Version verfügbar ist. Auf iOS 12+ wird es sein ASWebAuthenticationSession.
Standardkonfiguration für iOS
| Version | Webbrowser |
|---|---|
| iOS 12+ | ASWebAuthenticationSession |
| iOS 11 | SFAuthenticationSession |
| iOS 10 | SFSafariViewController |
Standardkonfiguration für macOS
| Version | Webbrowser |
|---|---|
| macOS 10.15+ | ASWebAuthenticationSession |
| andere Versionen | WKWebView |
Entwickler können auch einen anderen Systembrowser für MSAL-Apps auswählen:
-
SFAuthenticationSessionist die iOS 11-Version vonASWebAuthenticationSession. -
SFSafariViewControllerist allgemeiner und bietet eine Schnittstelle zum Surfen im Web und kann auch für Anmeldezwecke verwendet werden. In iOS 9 und 10 werden Cookies und andere Websitedaten mit Safari geteilt- aber nicht in iOS 11 und höher.
In-App-Browser
WKWebView ist ein In-App-Browser, der Webinhalte anzeigt. Sie teilt keine Cookies oder Website-Daten mit anderen WKWebView-Instanzen oder mit dem Browser Safari. WKWebView ist ein plattformübergreifender Browser, der sowohl für iOS als auch für macOS verfügbar ist.
Auswirkungen des Teilens von Cookies und von SSO
Der von Ihnen verwendete Browser wirkt sich auf die SSO-Erfahrung aus, weil sie Cookies teilen. In den folgenden Tabellen sind die SSO-Erfahrungen pro Browser zusammengefasst.
| Technologie | Browsertyp | iOS-Verfügbarkeit | macOS-Verfügbarkeit | Teilt Cookies und andere Daten | MSAL-Verfügbarkeit | Single Sign-On (SSO) |
|---|---|---|---|---|---|---|
| ASWebAuthenticationSession | System | iOS12 und oben | macOS 10.15 und oben | Yes | iOS und macOS 10.15+ | w/ Safari-Instanzen |
| SFAuthenticationSession | System | iOS11 und nach oben | N/A | Yes | Nur iOS | w/ Safari-Instanzen |
| SFSafariViewController | System | iOS11 und nach oben | N/A | No | Nur iOS | Nein** |
| SFSafariViewController | System | iOS10 | N/A | Yes | Nur iOS | w/ Safari-Instanzen |
| WKWebView | In-App | iOS8 und oben | macOS 10.10 und oben | No | iOS und macOS | Nein** |
** Damit SSO funktioniert, müssen Token zwischen Apps gemeinsam genutzt werden. Dies erfordert einen Tokencache oder eine Brokeranwendung, z. B. Microsoft Authenticator für iOS.
Ändern des Standardbrowsers für die Anforderung
Sie können je nach Ihren UX-Anforderungen einen In-App-Browser oder einen bestimmten Systembrowser verwenden, indem Sie die folgende Eigenschaft ändern:MSALWebviewParameters
@property (nonatomic) MSALWebviewType webviewType;
Änderung auf interaktive Anfrage
Jede Anfrage kann so konfiguriert werden, dass sie den Standardbrowser überschreibt, indem vor der Übergabe an die acquireTokenWithParameters:completionBlock:-API die Eigenschaft MSALInteractiveTokenParameters.webviewParameters.webviewType geändert wird.
Darüber hinaus unterstützt MSAL das Übergeben eines benutzerdefinierten WKWebView Objekts durch Festlegen der MSALInteractiveTokenParameters.webviewParameters.customWebView Eigenschaft.
Beispiel:
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)
Wenn Sie eine benutzerdefinierte Webansicht verwenden, werden Benachrichtigungen verwendet, um den Status des angezeigten Webinhalts anzugeben, z. B.:
/*! 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
Alle von MSAL unterstützten Webbrowsertypen werden in der MSALWebviewType-Enumeration deklariert.
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,
};
Nächste Schritte
Weitere Informationen zu Authentifizierungsflüssen und Anwendungsszenarien