Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een webbrowser is vereist voor interactieve verificatie. Op iOS en macOS 10.15+ gebruikt de Microsoft Authentication Library (MSAL) standaard de webbrowser van het systeem (die boven op uw app kan worden weergegeven) om interactieve verificatie uit te voeren om gebruikers aan te melden. Het gebruik van de systeembrowser heeft het voordeel dat u de status voor eenmalige aanmelding (SSO) deelt met andere toepassingen en met webtoepassingen.
U kunt de ervaring wijzigen door de configuratie aan te passen aan andere opties voor het weergeven van webinhoud, zoals:
Alleen voor iOS:
Voor iOS en macOS:
MSAL voor macOS ondersteunt WKWebView alleen oudere versies van het besturingssysteem.
ASWebAuthenticationSession wordt alleen ondersteund op macOS 10.15 en hoger.
Systeembrowsers
Voor iOS, ASWebAuthenticationSession, SFAuthenticationSessionen SFSafariViewController worden beschouwd als systeembrowsers. Voor macOS is alleen ASWebAuthenticationSession beschikbaar. In het algemeen delen systeembrowsers cookies en andere websitegegevens met de Safari-browsertoepassing.
Standaard detecteert MSAL de iOS-versie dynamisch en selecteert u de aanbevolen systeembrowser die beschikbaar is voor die versie. Op iOS 12+ zal dit ASWebAuthenticationSessionzijn.
Standaardconfiguratie voor iOS
| Versie | Webbrowser |
|---|---|
| iOS 12+ | ASWebAuthenticationSession |
| iOS 11 | SFAuthenticationSession |
| iOS 10 | SFSafariViewController |
Standaardconfiguratie voor macOS
| Versie | Webbrowser |
|---|---|
| macOS 10.15+ | ASWebAuthenticationSession |
| andere versies | WKWebView |
Ontwikkelaars kunnen ook een andere systeembrowser selecteren voor MSAL-apps:
-
SFAuthenticationSessionis de iOS 11-versie vanASWebAuthenticationSession. -
SFSafariViewControlleris algemener en biedt een interface voor surfen op internet en kan ook worden gebruikt voor aanmeldingsdoeleinden. In iOS 9 en 10 worden cookies en andere websitegegevens gedeeld met Safari, maar niet in iOS 11 en hoger.
In-app-browser
WKWebView is een in-app-browser die webinhoud weergeeft. Cookies of websitegegevens worden niet gedeeld met andere WKWebView-instanties of met de Safari-browser. WKWebView is een platformoverschrijdende browser die beschikbaar is voor zowel iOS als macOS.
Implicaties van het delen van cookies en single sign-on
De browser die u gebruikt, heeft gevolgen voor de SSO-ervaring vanwege de wijze waarop ze cookies delen. De volgende tabellen bevatten een overzicht van de SSO-ervaringen per browser.
| Technologie | Browsertype | iOS-beschikbaarheid | beschikbaarheid van macOS | Cookies en andere gegevens delen | MSAL-beschikbaarheid | Single Sign-On (Eenmalige Aanmelding) |
|---|---|---|---|---|---|---|
| ASWebAuthenticationSession | System | iOS12 en hoger | macOS 10.15 en hoger | Yes | iOS en macOS 10.15+ | met Safari-instanties |
| SFAuthenticationSession | System | iOS11 en hoger | N/A | Yes | Alleen iOS | met Safari-instanties |
| SFSafariViewController | System | iOS11 en hoger | N/A | Nee. | Alleen iOS | Nee** |
| SFSafariViewController | System | iOS10 | N/A | Yes | Alleen iOS | met Safari-instanties |
| WKWebView | In de app | iOS8 en hoger | macOS 10.10 en hoger | Nee. | iOS en macOS | Nee** |
** Om SSO te laten werken, moeten tokens tussen apps worden gedeeld. Hiervoor is een tokencache of brokertoepassing vereist, zoals Microsoft Authenticator voor iOS.
De standaardbrowser voor de aanvraag wijzigen
U kunt een in-app-browser of een specifieke systeembrowser gebruiken, afhankelijk van uw UX-vereisten, door de volgende eigenschap te wijzigen in MSALWebviewParameters:
@property (nonatomic) MSALWebviewType webviewType;
Wijzigen per interactieve aanvraag
Elke aanvraag kan worden geconfigureerd om de standaardbrowser te overschrijven door de MSALInteractiveTokenParameters.webviewParameters.webviewType eigenschap te wijzigen voordat deze aan de acquireTokenWithParameters:completionBlock: API wordt doorgegeven.
Daarnaast ondersteunt MSAL het doorgeven van een aangepaste WKWebView door de eigenschap MSALInteractiveTokenParameters.webviewParameters.customWebView in te stellen.
Voorbeeld:
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)
Als u een aangepaste webweergave gebruikt, worden meldingen gebruikt om de status aan te geven van de weergegeven webinhoud, zoals:
/*! 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 door MSAL ondersteunde webbrowsertypen worden gedeclareerd in de enum 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,
};
Volgende stappen
Meer informatie over verificatiestromen en toepassingsscenario's