Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Etkileşimli kimlik doğrulaması için bir web tarayıcısı gereklidir. iOS ve macOS 10.15+ sürümünde, Microsoft Authentication Library (MSAL), kullanıcıların oturum açması için etkileşimli kimlik doğrulaması yapmak için varsayılan olarak sistem web tarayıcısını kullanır (uygulamanızın üstünde görünebilir). Sistem tarayıcısının kullanılması, çoklu oturum açma (SSO) durumunu diğer uygulamalarla ve web uygulamalarıyla paylaşma avantajına sahiptir.
Web içeriğini görüntülemeye yönelik yapılandırmayı aşağıdaki gibi diğer seçeneklerle özelleştirerek deneyimi değiştirebilirsiniz:
Yalnızca iOS için:
iOS ve macOS için:
macOS için MSAL yalnızca eski işletim sistemi sürümlerini destekler WKWebView .
ASWebAuthenticationSession yalnızca macOS 10.15 ve üzeri sürümlerde desteklenir.
Sistem tarayıcıları
iOS, ASWebAuthenticationSession, SFAuthenticationSessionve SFSafariViewController için sistem tarayıcıları olarak kabul edilir. macOS için yalnızca ASWebAuthenticationSession kullanılabilir. Genel olarak, sistem tarayıcıları Safari tarayıcı uygulamasıyla tanımlama bilgilerini ve diğer web sitesi verilerini paylaşır.
Varsayılan olarak MSAL, iOS sürümünü dinamik olarak algılar ve bu sürümde kullanılabilen önerilen sistem tarayıcısını seçer. iOS 12 ve sonrasında bu ASWebAuthenticationSession olacaktır.
iOS için varsayılan yapılandırma
| Version | Web tarayıcısı |
|---|---|
| iOS 12+ | ASWebAuthenticationSession |
| iOS 11 | SFAuthenticationSession |
| iOS 10 | SFSafariViewController |
macOS için varsayılan yapılandırma
| Version | Web tarayıcısı |
|---|---|
| macOS 10.15+ | ASWebAuthenticationSession |
| diğer sürümler | WKWebView |
Geliştiriciler MSAL uygulamaları için farklı bir sistem tarayıcısı da seçebilir:
-
SFAuthenticationSession, 'nin iOS 11 sürümüdürASWebAuthenticationSession. -
SFSafariViewControllerdaha genel amaçlıdır ve web'e göz atmak için bir arabirim sağlar ve oturum açma amacıyla da kullanılabilir. iOS 9 ve 10'da tanımlama bilgileri ve diğer web sitesi verileri Safari ile paylaşılır ancak iOS 11 ve sonraki sürümlerde paylaşılmaz.
Uygulama içi tarayıcı
WKWebView , web içeriğini görüntüleyen bir uygulama içi tarayıcıdır. Tanımlama bilgilerini veya web sitesi verilerini diğer WKWebView örnekleriyle veya Safari tarayıcısıyla paylaşmaz. WKWebView, hem iOS hem de macOS için kullanılabilen platformlar arası bir tarayıcıdır.
Çerez paylaşımı ve SSO sonuçları
Kullandığınız tarayıcı, tanımlama bilgilerini paylaşma şekli nedeniyle SSO deneyimini etkiler. Aşağıdaki tablolarda tarayıcı başına SSO deneyimleri özetlenmiştir.
| Teknoloji | Tarayıcı Türü | iOS kullanılabilirliği | macOS kullanılabilirliği | Tanımlama bilgilerini ve diğer verileri paylaşır | MSAL kullanılabilirliği | Tek oturum açma (SSO) |
|---|---|---|---|---|---|---|
| ASWebAuthenticationSession | System | iOS12 ve üstü | macOS 10.15 ve üstü | Yes | iOS ve macOS 10.15+ | w/ Safari örnekleri |
| SFAuthenticationSession | System | iOS11 ve üstü | N/A | Yes | Yalnızca iOS | w/ Safari örnekleri |
| SFSafariViewController | System | iOS11 ve üstü | N/A | Hayır | Yalnızca iOS | Hayır** |
| SFSafariViewController | System | iOS10 | N/A | Yes | Yalnızca iOS | w/ Safari örnekleri |
| WKWebView | Uygulama içi | iOS8 ve üstü | macOS 10.10 ve üstü | Hayır | iOS ve macOS | Hayır** |
** SSO'nun çalışması için belirteçlerin uygulamalar arasında paylaşılması gerekir. Bu, iOS için Microsoft Authenticator gibi bir belirteç önbelleği veya aracı uygulaması gerektirir.
İstek için varsayılan tarayıcıyı değiştirme
uygulamasında aşağıdaki özelliği MSALWebviewParametersdeğiştirerek UX gereksinimlerinize bağlı olarak uygulama içi tarayıcıyı veya belirli bir sistem tarayıcısını kullanabilirsiniz:
@property (nonatomic) MSALWebviewType webviewType;
Etkileşimli istek başına değiştirme
Her istek, özelliği API'ye geçirmeden önce değiştirilerek varsayılan tarayıcıyı MSALInteractiveTokenParameters.webviewParameters.webviewTypeacquireTokenWithParameters:completionBlock: geçersiz kılacak şekilde yapılandırılabilir.
Ayrıca MSAL, MSALInteractiveTokenParameters.webviewParameters.customWebView özelliği ayarlanarak özel WKWebView iletilmesini destekler.
Örneğin:
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)
Özel bir web görünümü kullanıyorsanız, görüntülenen web içeriğinin durumunu belirtmek için bildirimler kullanılır, örneğin:
/*! 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 tarafından desteklenen tüm web tarayıcısı türleri MSALWebviewType sabit listesinde bildirilir
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,
};
Sonraki Adımlar
Kimlik doğrulama akışları ve uygulama senaryoları hakkında daha fazla bilgi edinin