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.
Z tego samouczka dowiesz się, jak zmodyfikować aplikację dla systemu iOS lub iPadOS w celu obsługi trybu udostępnionego urządzenia (SDM). SDM to funkcja Microsoft Entra ID, która umożliwia organizacjom konfigurowanie urządzenia z systemem iOS, iPadOS lub Androidem do łatwego udostępniania go wielu pracownikom, co jest powszechną praktyką w środowiskach pracy pracowników pierwszej linii.
W tym samouczku nauczysz się następujących rzeczy:
- Dodano obsługę trybu pojedynczego konta.
- Skonfiguruj aplikację tak, aby korzystała z narzędzia SDM.
- Wykryj tryb urządzenia współdzielonego.
- Określ, czy zalogowany użytkownik uległ zmianie.
Wymagania wstępne
- samouczek : logowanie użytkowników i wywoływanie programu Microsoft Graph z aplikacji systemu iOS lub macOS
Wykrywanie trybu udostępnionego urządzenia
Wykrywanie trybu udostępnionego urządzenia jest ważne dla aplikacji. Wiele aplikacji wymaga zmiany środowiska użytkownika (UX), gdy aplikacja jest używana na urządzeniu udostępnionym. Na przykład Twoja aplikacja może zawierać funkcję „Zarejestruj się”, co nie jest odpowiednie w przypadku pracownika pierwszej linii, ponieważ prawdopodobnie ma on już konto. Możesz również dodać dodatkowe zabezpieczenia do sposobu, w jaki aplikacja obsługuje dane, jeśli działa ona w trybie urządzenia współdzielonego.
Użyj interfejsu getDeviceInformationWithParameters:completionBlock: API w elemecie MSALPublicClientApplication , aby określić, czy aplikacja jest uruchomiona na urządzeniu w trybie urządzenia udostępnionego.
Poniższe fragmenty kodu pokazują przykłady użycia interfejsu getDeviceInformationWithParameters:completionBlock: API.
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
}];
Pobierz zalogowanego użytkownika i ustal, czy użytkownik zmienił się na urządzeniu
Inną ważną częścią obsługi trybu udostępnionego urządzenia jest określenie stanu użytkownika na urządzeniu i wyczyszczenie danych aplikacji, jeśli użytkownik uległ zmianie lub jeśli na urządzeniu nie ma żadnego użytkownika. Odpowiadasz za zapewnienie, że dane nie wyciekły do innego użytkownika.
Za pomocą interfejsu getCurrentAccountWithParameters:completionBlock: API możesz wysyłać zapytania o obecnie zalogowane konto na urządzeniu.
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
}];
Globalne logowanie użytkownika
Po skonfigurowaniu urządzenia jako urządzenia udostępnionego aplikacja może wywołać acquireTokenWithParameters:completionBlock: interfejs API w celu zalogowania się na koncie. Konto będzie dostępne globalnie dla wszystkich kwalifikujących się aplikacji na urządzeniu po pierwszym zalogowaniu się na koncie.
Objective-C
MSALInteractiveTokenParameters *parameters = [[MSALInteractiveTokenParameters alloc] initWithScopes:@[@"api://myapi/scope"] webviewParameters:[self msalTestWebViewParameters]];
parameters.loginHint = self.loginHintTextField.text;
[application acquireTokenWithParameters:parameters completionBlock:completionBlock];
Globalnie wyloguj użytkownika
Poniższy kod usuwa zalogowane konto i czyści buforowane tokeny nie tylko z aplikacji, ale także z urządzenia, które jest w trybie urządzenia udostępnionego. Nie powoduje to jednak wyczyszczenia danych z aplikacji. Musisz wyczyścić dane z aplikacji i wyczyścić wszystkie buforowane dane, które aplikacja może wyświetlać użytkownikowi.
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
}];
Wtyczka Microsoft Enterprise SSO dla urządzeń Apple czyści stan tylko dla aplikacji. Stan nie jest czyszczony w przeglądarce Safari. Możesz użyć opcjonalnej właściwości signoutFromBrowser, pokazanej w przykładowych fragmentach kodu, aby spowodować wylogowanie w przeglądarce Safari. Powoduje to krótkie uruchomienie przeglądarki na urządzeniu.
Odbieranie emisji w celu wykrywania globalnego wylogowania zainicjowanego z innych aplikacji
Aby odebrać emisję zmiany konta, należy zarejestrować odbiornik emisji. Po odebraniu sygnału zmiany konta natychmiast sprawdź zalogowanego użytkownika i ustal, czy użytkownik zmienił się na urządzeniu. Jeśli zostanie wykryta zmiana, zainicjuj czyszczenie danych dla wcześniej zalogowanego konta. Zaleca się prawidłowe zatrzymywanie wszystkich operacji i czyszczenie danych.
Poniższy fragment kodu pokazuje, jak można zarejestrować odbiornik emisji.
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
}
Aby uzyskać więcej informacji na temat dostępnych opcji dla CFNotificationAddObserver lub zobaczyć odpowiadające im sygnatury metod w języku Swift, zobacz:
W przypadku systemu iOS aplikacja wymaga uprawnienia do działania w tle i nasłuchiwania powiadomień Darwin. Należy dodać uprawnienie działania w tle, aby obsługiwać inną operację wykonywaną w tle — aplikacja może zostać odrzucona z Apple App Store, jeśli ma uprawnienie działania w tle wyłącznie do nasłuchiwania powiadomień Darwin. Jeśli aplikacja jest już skonfigurowana do wykonywania operacji w tle, możesz dodać odbiornik w ramach tej operacji. Aby uzyskać więcej informacji na temat funkcji w tle systemu iOS, zobacz Konfigurowanie trybów wykonywania w tle
Aplikacje firmy Microsoft obsługujące tryb urządzenia współdzielonego
Te aplikacje firmy Microsoft obsługują tryb urządzenia współdzielonego platformy Microsoft Entra:
- Microsoft Teams
- Microsoft Viva Engage (wcześniej Yammer)
- Microsoft Outlook
- Microsoft Power Apps
- Microsoft Power BI dla urządzeń przenośnych
- Microsoft Edge
- Microsoft Word
- Microsoft Excel
- Microsoft PowerPoint
Ważna
Publiczna wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie jest zalecana w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub mają ograniczone możliwości. Aby uzyskać więcej informacji, zobacz Uniwersalne postanowienia licencyjne dotyczące usług online.
MDM innych firm, które obsługują tryb udostępnionego urządzenia
Ci zewnętrzni dostawcy rozwiązań Mobile Zarządzanie urządzeniami (MDM) obsługują tryb urządzenia udostępnionego Microsoft Entra:
Następne kroki
Aby zobaczyć tryb udostępnionego urządzenia w działaniu, poniższy przykład kodu w serwisie GitHub pokazuje, jak uruchomić aplikację dla pracowników pierwszej linii na urządzeniu z systemem iOS w trybie udostępnionego urządzenia: