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.
Bu öğreticide bir iOS veya iPadOS uygulamasını Paylaşılan Cihaz Modu'nu (SDM) destekleyecek şekilde değiştirmeyi öğreneceksiniz. SDM, kuruluşların bir iOS, iPadOS veya Android cihazı birden çok çalışan arasında kolay paylaşım için yapılandırmasına olanak tanıyan Microsoft Entra ID bir özelliktir ve ön çalışan ayarlarında yaygın olarak kullanılan bir uygulamadır.
Bu eğitimde, siz:
- Tek hesap modu için destek ekleyin.
- Uygulamanızı SDM kullanacak şekilde yapılandırın.
- Paylaşılan cihaz modunu algılama.
- Oturum açmış kullanıcının değişip değişmediğini belirleyin.
Prerequisites
Paylaşılan cihaz modunu algılama
Paylaşılan cihaz modunu algılamak uygulamanız için önemlidir. Birçok uygulama, paylaşılan bir cihazda kullanıldığında kullanıcı deneyiminde (UX) değişiklik yapılmasını gerektirir. Örneğin, uygulamanızın bir "Kaydolma" özelliği olabilir ve bu özellik ön hat çalışanı için uygun değildir çünkü zaten bir hesabı vardır. Ayrıca, paylaşılan cihaz modundaysa uygulamanızın veri işlemesine ek güvenlik de eklemek isteyebilirsiniz.
getDeviceInformationWithParameters:completionBlock: Paylaşılan cihaz modunda bir cihazda bir uygulamanın çalışıp çalışmadığını belirlemek için içindeki API'yi MSALPublicClientApplication kullanın.
Aşağıdaki kod parçacıkları, getDeviceInformationWithParameters:completionBlock: API'sinin kullanımına ilişkin örnekler göstermektedir.
Swift
application.getDeviceInformation(with: nil, completionBlock: { (deviceInformation, error) in
guard let deviceInfo = deviceInformation else {
return
}
let isSharedDevice = deviceInfo.deviceMode == .shared
// Change your app UX if needed
})
Objective-C
[application getDeviceInformationWithParameters:nil
completionBlock:^(MSALDeviceInformation * _Nullable deviceInformation, NSError * _Nullable error)
{
if (!deviceInformation)
{
return;
}
BOOL isSharedDevice = deviceInformation.deviceMode == MSALDeviceModeShared;
// Change your app UX if needed
}];
Oturum açmış kullanıcıyı almak ve cihazdaki kullanıcının değişip değişmediğini belirlemek
Paylaşılan cihaz modunu desteklemenin bir diğer önemli bölümü de kullanıcının cihazdaki durumunu belirlemek ve bir kullanıcı değiştiyse veya cihazda hiç kullanıcı yoksa uygulama verilerini temizlemektir. Verilerin başka bir kullanıcıya sızmadığından emin olmak sizin sorumluluğundadır.
Cihazda şu anda oturum açmış olan hesabı sorgulamak için API'yi kullanabilirsiniz getCurrentAccountWithParameters:completionBlock: .
Swift
let msalParameters = MSALParameters()
msalParameters.completionBlockQueue = DispatchQueue.main
application.getCurrentAccount(with: msalParameters, completionBlock: { (currentAccount, previousAccount, error) in
// currentAccount is the currently signed in account
// previousAccount is the previously signed in account if any
})
Objective-C
MSALParameters *parameters = [MSALParameters new];
parameters.completionBlockQueue = dispatch_get_main_queue();
[application getCurrentAccountWithParameters:parameters
completionBlock:^(MSALAccount * _Nullable account, MSALAccount * _Nullable previousAccount, NSError * _Nullable error)
{
// currentAccount is the currently signed in account
// previousAccount is the previously signed in account if any
}];
Bir kullanıcı için global oturum açın
Bir cihaz paylaşılan cihaz olarak yapılandırıldığında, uygulamanız hesapta oturum açmak için API'yi çağırabilir acquireTokenWithParameters:completionBlock: . Hesap, ilk uygulama hesapta oturum açtığında cihazdaki tüm uygun uygulamalar için genel kullanıma sunulacaktır.
Objective-C
MSALInteractiveTokenParameters *parameters = [[MSALInteractiveTokenParameters alloc] initWithScopes:@[@"api://myapi/scope"] webviewParameters:[self msalTestWebViewParameters]];
parameters.loginHint = self.loginHintTextField.text;
[application acquireTokenWithParameters:parameters completionBlock:completionBlock];
Bir kullanıcının genel olarak oturumunu kapatma
Aşağıdaki kod, oturum açmış hesabı kaldırır ve önbelleğe alınan belirteçleri yalnızca uygulamadan değil paylaşılan cihaz modundaki cihazdan da temizler. Ancak uygulamanızdaki verileri temizlemez. Uygulamanızdaki verileri temizlemeniz ve uygulamanızın kullanıcıya görüntüleyebileceği önbelleğe alınmış verileri temizlemeniz gerekir.
Swift
let account = .... /* account retrieved above */
let signoutParameters = MSALSignoutParameters(webviewParameters: self.webViewParamaters!)
signoutParameters.signoutFromBrowser = true // To trigger a browser signout in Safari.
application.signout(with: account, signoutParameters: signoutParameters, completionBlock: {(success, error) in
if let error = error {
// Signout failed
return
}
// Sign out completed successfully
})
Objective-C
MSALAccount *account = ... /* account retrieved above */;
MSALSignoutParameters *signoutParameters = [[MSALSignoutParameters alloc] initWithWebviewParameters:webViewParameters];
signoutParameters.signoutFromBrowser = YES; // To trigger a browser signout in Safari.
[application signoutWithAccount:account signoutParameters:signoutParameters completionBlock:^(BOOL success, NSError * _Nullable error)
{
if (!success)
{
// Signout failed
return;
}
// Sign out completed successfully
}];
Apple cihazları için Microsoft Enterprise SSO eklentisi yalnızca uygulamalar için durumu temizler. Safari tarayıcıdaki durumu temizlemez. Safari'de tarayıcı oturumu kapatma işlemini tetikleme amacıyla kod parçacıklarında gösterilen isteğe bağlı signoutFromBrowser özelliği kullanabilirsiniz. Bu, tarayıcının cihazda kısa bir süre başlatılmasına neden olur.
Diğer uygulamalardan başlatılan genel oturumu kapatma işlemini algılamak için yayını al.
Hesap değişikliği yayınını almak için bir yayın alıcısı kaydetmeniz gerekir. Hesap değişikliği yayını alındığında, oturum açılan kullanıcıyı derhal alın ve cihazda bir kullanıcının değişip değişmediğini belirleyin. Bir değişiklik algılanırsa, önceden oturum açmış hesap için veri temizlemeyi başlatın. Tüm işlemlerin düzgün bir şekilde durdurulması ve veri temizlemenin yapılması önerilir.
Aşağıdaki kod parçacığı, yayın alıcısını nasıl kaydedebildiğinizi gösterir.
NSString *const MSAL_SHARED_MODE_CURRENT_ACCOUNT_CHANGED_NOTIFICATION_KEY = @"SHARED_MODE_CURRENT_ACCOUNT_CHANGED";
- (void) registerDarwinNotificationListener
{
CFNotificationCenterRef center =
CFNotificationCenterGetDarwinNotifyCenter();
CFNotificationCenterAddObserver(center, nil,
sharedModeAccountChangedCallback,
(CFStringRef)MSAL_SHARED_MODE_CURRENT_ACCOUNT_CHANGED_NOTIFICATION_KEY,
nil, CFNotificationSuspensionBehaviorDeliverImmediately);
}
// CFNotificationCallbacks used specifically for Darwin notifications leave userInfo unused
void sharedModeAccountChangedCallback(CFNotificationCenterRef center, void * observer, CFStringRef name, void const * object, __unused CFDictionaryRef userInfo)
{
// Invoke account cleanup logic here
}
CFNotificationAddObserver için kullanılabilir seçenekler hakkında daha fazla bilgi edinmek veya Swift'teki ilgili yöntem imzalarını görmek için şuna bakın:
iOS için uygulamanız arka planda etkin kalmak ve Darwin bildirimlerini dinlemek için arka plan izni gerektirir. Arka plan özelliğinin farklı bir arka plan işlemini desteklemek için eklenmesi gerekir. Uygulamanız yalnızca Darwin bildirimlerini dinlemeye yönelik bir arka plan özelliğine sahipse Apple App Store'dan reddedilebilir. Uygulamanız arka plan işlemlerini tamamlamak için zaten yapılandırılmışsa, dinleyiciyi bu işlemin bir parçası olarak ekleyebilirsiniz. iOS arka plan özellikleri hakkında daha fazla bilgi için bkz . Arka plan yürütme modlarını yapılandırma
Paylaşılan cihaz modunu destekleyen Microsoft uygulamaları
Bu Microsoft uygulamaları Microsoft Entra paylaşılan cihaz modunu destekler:
- Microsoft Ekipleri
- Microsoft Viva Engage (önceki yammer)
- Microsoft Outlook
- Microsoft Power Apps
- Microsoft Power BI Mobil
- Microsoft Edge
- Microsoft Word
- Microsoft Excel
- Microsoft PowerPoint
Important
Genel önizleme, hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için önerilmez. Bazı özellikler desteklenmiyor veya kısıtlı özelliklere sahip olabilir. Daha fazla bilgi için bkz. Çevrimiçi Hizmetler için Evrensel Lisans Koşulları.
Paylaşılan cihaz modunu destekleyen üçüncü taraf MDM'ler
Bu üçüncü taraf Mobil Cihaz Yönetimi (MDM) sağlayıcıları, Microsoft Entra paylaşılan cihaz modunu destekler:
Sonraki Adımlar
Paylaşılan cihaz modunun çalışır durumda olduğunu görmek için, GitHub'daki aşağıdaki kod örneği, paylaşılan cihaz modunda iOS cihazında ön hat çalışan uygulamasını çalıştırma örneği içerir: