Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przeglądarka internetowa jest wymagana do uwierzytelniania interakcyjnego. W systemach iOS i macOS 10.15 lub nowszych Microsoft Authentication Library (MSAL) domyślnie używa systemowej przeglądarki internetowej (która może pojawić się w górnej części aplikacji), aby przeprowadzić interaktywne uwierzytelnianie w celu zalogowania użytkowników. Korzystanie z przeglądarki systemowej ma zaletę udostępniania stanu logowania jednokrotnego z innymi aplikacjami i aplikacjami internetowymi.
Środowisko można zmienić, dostosowując konfigurację do innych opcji wyświetlania zawartości internetowej, takich jak:
Tylko w przypadku systemu iOS:
W przypadku systemów iOS i macOS:
MSAL dla systemu macOS obsługuje tylko WKWebView w starszych wersjach systemu operacyjnego.
ASWebAuthenticationSession Program jest obsługiwany tylko w systemie macOS 10.15 lub nowszym.
Przeglądarki systemowe
W przypadku systemów iOS, ASWebAuthenticationSession, SFAuthenticationSessioni SFSafariViewController są traktowane jako przeglądarki systemowe. W przypadku systemu macOS jest dostępny tylko ASWebAuthenticationSession . Ogólnie rzecz biorąc, przeglądarki systemowe udostępniają pliki cookie i inne dane witryny internetowej aplikacji przeglądarki Safari.
Domyślnie biblioteka MSAL będzie dynamicznie wykrywać wersję systemu iOS i wybiera zalecaną przeglądarkę systemową dostępną w tej wersji. W systemie iOS 12 lub nowszym będzie to ASWebAuthenticationSession.
Domyślna konfiguracja dla systemu iOS
| wersja | przeglądarka internetowa |
|---|---|
| iOS 12+ | ASWebAuthenticationSession |
| iOS 11 | SFAuthenticationSession |
| iOS 10 | SFSafariViewController |
Domyślna konfiguracja dla systemu macOS
| wersja | przeglądarka internetowa |
|---|---|
| system macOS 10.15 lub nowszy | ASWebAuthenticationSession |
| inne wersje | WKWebView |
Deweloperzy mogą również wybrać inną przeglądarkę systemową dla aplikacji MSAL:
-
SFAuthenticationSessionto wersja systemu iOS 11 programuASWebAuthenticationSession. -
SFSafariViewControllerjest bardziej ogólnego przeznaczenia i udostępnia interfejs do przeglądania internetu i może być również używany do celów logowania. W systemach iOS 9 i 10 pliki cookie i inne dane witryny internetowej są udostępniane w przeglądarce Safari— ale nie w systemie iOS 11 lub nowszym.
Przeglądarka w aplikacji
WKWebView to przeglądarka w aplikacji, która wyświetla zawartość internetową. Nie udostępnia plików cookie ani danych witryny innym instancjom WKWebView ani przeglądarce Safari. WKWebView to międzyplatformowa przeglądarka, która jest dostępna zarówno dla systemów iOS, jak i macOS.
Udostępnianie plików cookie i konsekwencje stosowania SSO
Przeglądarka, której używasz, wpływa na korzystanie z logowania jednokrotnego (SSO) ze względu na sposób, w jaki przeglądarki współdzielą pliki cookie. Poniższe tabele podsumowują działanie SSO w podziale na przeglądarki.
| Technologia | Typ przeglądarki | Dostępność systemu iOS | Dostępność systemu macOS | Udostępnia pliki cookie i inne dane | Dostępność biblioteki MSAL | logowanie jednokrotne |
|---|---|---|---|---|---|---|
| ASWebAuthenticationSession | System | iOS12 i nowszy | System macOS 10.15 i nowszy | Yes | iOS i macOS 10.15+ | w/ Wystąpienia przeglądarki Safari |
| SFAuthenticationSession | System | iOS11 i nowszy | N/A | Yes | Tylko system iOS | w/ Wystąpienia przeglądarki Safari |
| SFSafariViewController | System | iOS11 i nowszy | N/A | No | Tylko system iOS | Nie** |
| SFSafariViewController | System | iOS10 | N/A | Yes | Tylko system iOS | w/ Wystąpienia przeglądarki Safari |
| WKWebView | W aplikacji | iOS8 i nowszy | System macOS 10.10 i nowszy | No | iOS i macOS | Nie** |
** Aby logowanie jednokrotne działało, tokeny muszą być współużytkowane przez aplikacje. Wymaga to pamięci podręcznej tokenu lub aplikacji brokera, takiej jak Microsoft Authenticator dla systemu iOS.
Zmienianie domyślnej przeglądarki dla żądania
Możesz użyć przeglądarki w aplikacji lub określonej przeglądarki systemowej w zależności od wymagań środowiska użytkownika, zmieniając następującą właściwość w pliku MSALWebviewParameters:
@property (nonatomic) MSALWebviewType webviewType;
Zmiana zgodnie z żądaniem interaktywnym
Każde żądanie można skonfigurować tak, aby zastąpić domyślną przeglądarkę poprzez zmianę właściwości MSALInteractiveTokenParameters.webviewParameters.webviewType przed przekazaniem żądania do interfejsu API acquireTokenWithParameters:completionBlock:.
Ponadto biblioteka MSAL obsługuje przekazywanie niestandardowego elementu WKWebView przez ustawienie właściwości MSALInteractiveTokenParameters.webviewParameters.customWebView.
Przykład:
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)
Jeśli używasz niestandardowego widoku internetowego, powiadomienia są używane do wskazywania stanu wyświetlanej zawartości internetowej, na przykład:
/*! 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;
Opcje
Wszystkie obsługiwane przez bibliotekę MSAL typy przeglądarek internetowych są zdefiniowane w wyliczeniu 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,
};
Następne kroki
Dowiedz się więcej o przepływach uwierzytelniania i scenariuszach aplikacji