Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Для интерактивной проверки подлинности требуется веб-браузер. В iOS и macOS 10.15+, Microsoft Authentication Library (MSAL) использует системный веб-браузер по умолчанию (который может отображаться в верхней части приложения) для выполнения интерактивной проверки подлинности для входа пользователей. Использование системного браузера имеет преимущество совместного использования состояния единого входа (SSO) с другими приложениями и веб-приложениями.
Вы можете изменить интерфейс, настроив конфигурацию на другие параметры для отображения веб-содержимого, например:
Только для iOS:
Для iOS и macOS:
MSAL для macOS поддерживает WKWebView только в старых версиях ОС.
ASWebAuthenticationSession поддерживается только в macOS 10.15 и более поздних версиях.
Системные браузеры
Для iOS, ASWebAuthenticationSessionи SFAuthenticationSessionSFSafariViewController считаются системными браузерами. Для macOS доступен только ASWebAuthenticationSession. Как правило, системные браузеры совместно используют файлы cookie и другие данные веб-сайта с приложением браузера Safari.
По умолчанию MSAL динамически обнаруживает версию iOS и выбирает рекомендуемый системный браузер, доступный в этой версии. В iOS 12+ он будет ASWebAuthenticationSession.
Конфигурация по умолчанию для iOS
| Версия | веб-браузер; |
|---|---|
| iOS 12+ | ASWebAuthenticationSession |
| iOS 11 | SFAuthenticationSession |
| iOS 10 | SFSafariViewController |
Конфигурация по умолчанию для macOS
| Версия | веб-браузер; |
|---|---|
| macOS 10.15+ | ASWebAuthenticationSession |
| другие версии | WKWebView |
Разработчики также могут выбрать другой системный браузер для приложений MSAL:
-
SFAuthenticationSession— это версияASWebAuthenticationSessioniOS 11 . -
SFSafariViewControllerявляется более общим назначением и предоставляет интерфейс для просмотра в Интернете и может использоваться для целей входа. В iOS 9 и 10 файлы cookie и другие данные веб-сайта используются в Safari, но не в iOS 11 и более поздних версиях.
Браузер в приложении
WKWebView — это браузер в приложении, который отображает веб-содержимое. Он не предоставляет общий доступ к файлам cookie или данным веб-сайта другим экземплярам WKWebView или браузеру Safari. WKWebView — это кроссплатформенный браузер, доступный как для iOS, так и для macOS.
Совместное использование файлов cookie и последствия SSO
Браузер, который вы используете, влияет на работу SSO из-за особенностей обмена файлами cookie. В следующих таблицах приведена сводка по сценариям единого входа для каждого браузера.
| Технология | Тип браузера | Доступность iOS | Доступность macOS | Передаёт файлы cookie и другие данные | Доступность MSAL | Система единого входа (SSO) |
|---|---|---|---|---|---|---|
| ASWebAuthenticationSession | Система | iOS12 и вверх | macOS 10.15 и более | Да | iOS и macOS 10.15+ | Экземпляры с Safari |
| SFAuthenticationSession | Система | iOS11 и вверх | N/A | Да | Только iOS | Экземпляры с Safari |
| SFSafariViewController | Система | iOS11 и вверх | N/A | Нет | Только iOS | Нет** |
| SFSafariViewController | Система | iOS10 | N/A | Да | Только iOS | Экземпляры с Safari |
| WKWebView | В приложении | iOS8 и вверх | macOS 10.10 и более | Нет | iOS и macOS | Нет** |
** Для обеспечения работы единого входа маркеры необходимо совместно использовать между приложениями. Для этого требуется кэш токенов или приложение-посредник, например Microsoft Authenticator для iOS.
Изменение браузера по умолчанию для запроса
Вы можете использовать браузер в приложении или определенный системный браузер в зависимости от требований пользовательского интерфейса, изменив следующее свойство в MSALWebviewParameters:
@property (nonatomic) MSALWebviewType webviewType;
Изменение по интерактивному запросу
Каждый запрос можно настроить так, чтобы переопределить браузер по умолчанию, изменив свойство MSALInteractiveTokenParameters.webviewParameters.webviewType перед передачей запроса в API acquireTokenWithParameters:completionBlock:.
Кроме того, MSAL поддерживает возможность передавать пользовательский WKWebView, задав свойство MSALInteractiveTokenParameters.webviewParameters.customWebView.
Рассмотрим пример.
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)
При использовании пользовательского веб-представления уведомления используются для указания состояния отображаемого веб-содержимого, например:
/*! 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
Все поддерживаемые типы веб-браузеров MSAL объявляются в перечислении 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,
};
Дальнейшие действия
Дополнительные сведения о потоках проверки подлинности и сценариях приложений