Modus für gemeinsam genutzte Geräte für iOS-Geräte

Mitarbeiter in Service und Produktion (z. B. Mitarbeiter im Einzelhandel, Mitglieder der Flugzeugbesatzung oder Außendienstmitarbeiter) verwenden für ihre Arbeit häufig ein gemeinsam genutztes mobiles Gerät. Diese gemeinsam genutzten Geräte können Sicherheitsrisiken darstellen, wenn Benutzer Kennwörter oder Pins absichtlich oder versehentlich teilen, um auf Kunden- und Geschäftsdaten auf dem gemeinsam genutzten Gerät zuzugreifen.

Im Modus für gemeinsam genutzte Geräte können Sie ein Gerät mit iOS 14 oder höher konfigurieren, damit es einfacher und sicherer von Mitarbeitern gemeinsam genutzt werden kann. Mitarbeiter können sich einmal anmelden und das einmalige Anmelden (Single Sign-On, SSO) für alle Apps erhalten, die dieses Feature unterstützen, sodass sie schneller auf Informationen zugreifen können. Wenn sie mit ihrer Schicht oder Aufgabe fertig sind, können sie sich vom Gerät über jede unterstützte App abmelden, die sie auch von allen Apps abmeldet, die dieses Feature unterstützen, und das Gerät ist sofort bereit für die Verwendung durch den nächsten Mitarbeiter, ohne dass auf die Daten des vorherigen Benutzers zugegriffen werden kann.

Bei der Nutzung der Vorteile des Modus für gemeinsam genutzte Geräte arbeiten Entwickler und Cloudgeräteadministratoren zusammen:

  1. Geräteadministratoren bereiten die Geräte mithilfe eines Mobile Device Management-(MDM-)Anbieters wie Microsoft Intune für die gemeinsame Nutzung vor. MDM überträgt die Microsoft Authenticator-App per Pushvorgang auf die Geräte und aktiviert auf jedem Gerät durch ein Profilupdate den „Modus für gemeinsam genutzte Geräte“. Durch die Einstellung „Modus für gemeinsam genutzte Geräte“ ändert sich das Verhalten der unterstützten Apps auf dem Gerät. Diese Konfiguration vom MDM-Anbieter legt für das Gerät den Modus für gemeinsam genutzte Geräte fest und aktiviert das Microsoft Enterprise SSO-Plug-In für Apple-Geräte, das für den Modus für gemeinsam genutzte Geräte erforderlich ist. Weitere Informationen zu SSO-Erweiterungen finden Sie im Apple-Video.

  2. Anwendungsentwickler schreiben eine App für ein einzelnes Konto (Apps für mehrere Konten werden im Modus für gemeinsam genutzte Geräte nicht unterstützt) für den Umgang mit dem folgenden Szenario.

    • Geräteweites Anmelden des Benutzers über jede unterstützte Anwendung
    • Geräteweites Abmelden des Benutzers über jede unterstützte Anwendung
    • Abfragen des Gerätestatus, um zu ermitteln, ob sich die Anwendung auf einem Gerät befindet, das den Modus für gemeinsam genutzte Geräte aufweist
    • Abfragen des Gerätestatus des Benutzers auf dem Gerät, um zu ermitteln, ob sich seit der letzten Verwendung der Anwendung etwas geändert hat

    Die Unterstützung des Modus für gemeinsam genutzte Geräte sollte als Featureupgrade für Ihre Anwendung betrachtet werden und kann dazu beitragen, die Verwendung des Modus in Umgebungen zu steigern, in denen ein Gerät von mehreren Benutzern gemeinsam verwendet wird.

    Wichtig

    Microsoft-Anwendungen, die den Modus für gemeinsam genutzte Geräte unter iOS unterstützen, erfordern keine Änderungen und müssen nur auf dem Gerät installiert werden, um die Vorteile des Modus für gemeinsam genutzte Geräte nutzen zu können.

Einrichten des Geräts im Modus für gemeinsame Geräte

Ihr Gerät muss konfiguriert werden, um den Modus für gemeinsam genutzte Geräte zu unterstützen. Auf dem Gerät muss iOS 14 oder höher installiert sein, und das Gerät muss für MDM registriert sein. Mit der MDM-Konfiguration muss auch das Microsoft Enterprise SSO-Plug-In für Apple-Geräte aktiviert werden.

Microsoft Intune unterstützt die Zero-Touch-Bereitstellung für Geräte im Modus für freigegebene Microsoft Entra-Geräte. Dies bedeutet, dass das Gerät in Intune mit minimaler Interaktion des Personals in Service und Produktion eingerichtet und registriert werden kann. Informationen zum Einrichten des Geräts im Modus für gemeinsam genutzte Geräte bei Verwendung von Microsoft Intune als MDM finden Sie unter Einrichten der Registrierung für Geräte im Modus für freigegebene Microsoft Entra-Geräte.

Wichtig

Wir arbeiten mit MDMs von Drittanbietern zusammen, um den Modus für freigegebene Geräte zu unterstützen. Wir aktualisieren die Liste der MDMs von Drittanbietern, sobald sie den Modus für gemeinsam genutzte Geräte unterstützen.

Ändern der iOS-Anwendung zum Unterstützen des Modus für gemeinsam genutzte Geräte

Ihre Benutzer müssen sich darauf verlassen können, dass Sie sicherstellen, dass ihre Daten nicht anderen Benutzern offengelegt werden. Die folgenden Abschnitte enthalten hilfreiche Signale, die Ihrer Anwendung zeigen, dass eine Änderung eingetreten ist und behandelt werden sollte.

Sie sind bei jeder Verwendung der App verantwortlich für die Überprüfung des Benutzerstatus auf dem Gerät und für das Löschen der Daten des vorherigen Benutzers. Dies gilt auch, wenn die Anwendung beim Multitasking erneut aus dem Hintergrund geladen wird.

Bei einem Wechsel des Benutzers müssen Sie sicherstellen, dass die Daten des vorherigen Benutzers gelöscht sowie alle zwischengespeicherten Daten, die in der Anwendung angezeigt werden, entfernt werden. Wir empfehlen Ihnen und Ihrem Unternehmen dringend, nach dem Aktualisieren Ihrer App zur Unterstützung des Modus für gemeinsam genutzte Geräte eine Sicherheitsüberprüfung durchzuführen.

Erkennen des Modus für gemeinsam genutzte Geräte

Das Erkennen des Modus für gemeinsam genutzte Geräte ist wichtig für Ihre Anwendung. Viele Anwendungen erfordern eine Änderung der Benutzerumgebung, wenn die Anwendung auf einem gemeinsam genutzten Gerät verwendet wird. Beispielsweise kann Ihre Anwendung über ein „Registrierungsfeature“ verfügen, die für Mitarbeiter in Service und Produktion nicht geeignet ist, da diese wahrscheinlich bereits über ein Konto verfügen. Vielleicht möchten Sie für die Verarbeitung der Daten in Ihrer Anwendung auch zusätzliche Sicherheit bereitstellen, wenn der Modus für gemeinsam genutzte Geräte verwendet wird.

Ermitteln Sie mit der getDeviceInformationWithParameters:completionBlock:-API in MSALPublicClientApplication, ob eine App auf einem Gerät mit dem Modus für gemeinsam genutzte Geräte ausgeführt wird.

Die folgenden Codeausschnitte zeigen Beispiele für die Verwendung der 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
}];

Abrufen des angemeldeten Benutzers und Ermitteln, ob sich der Benutzer des Geräts geändert hat

Ein weiterer wichtiger Bestandteil bei der Unterstützung des Modus für gemeinsam genutzte Geräte besteht darin, den Status des Benutzers auf dem Gerät zu bestimmen und Anwendungsdaten zu löschen, wenn sich der Benutzer geändert hat oder kein Benutzer das Gerät verwendet. Sie sind dafür verantwortlich sicherzustellen, dass Daten anderen Benutzern nicht offengelegt werden.

Mit der getCurrentAccountWithParameters:completionBlock:-API können Sie das derzeit angemeldete Konto auf dem Gerät abfragen.

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
}];

Globales Anmelden eines Benutzers

Wenn ein Gerät als gemeinsam genutztes Gerät konfiguriert ist, kann Ihre Anwendung die acquireTokenWithParameters:completionBlock:-API zum Anmelden des Kontos anrufen. Das Konto ist global für alle berechtigten Apps auf dem Gerät verfügbar, nachdem die erste App das Konto angemeldet hat.

Objective-C

MSALInteractiveTokenParameters *parameters = [[MSALInteractiveTokenParameters alloc] initWithScopes:@[@"api://myapi/scope"] webviewParameters:[self msalTestWebViewParameters]];

parameters.loginHint = self.loginHintTextField.text;

[application acquireTokenWithParameters:parameters completionBlock:completionBlock];

Globales Abmelden eines Benutzers

Mit dem folgenden Code wird das angemeldete Konto entfernt, und zwischengespeicherte Token werden nicht nur aus der App, sondern auch vom Gerät gelöscht, das sich im Modus für gemeinsam genutzte Geräte befindet. Es werden jedoch keine Daten aus der Anwendung gelöscht. Sie müssen die Daten aus der Anwendung sowie alle zwischengespeicherten Daten, die Ihre Anwendung möglicherweise dem Benutzer anzeigt, löschen.

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

}];

Das Microsoft Enterprise SSO-Plug-In für Apple-Geräte löscht den Status nur für Anwendungen. Es löscht nicht den Status im Safari-Browser. Sie können die optionale signoutFromBrowser-Eigenschaft verwenden, die in den obigen Codeausschnitten gezeigt wird, um eine Browserabmeldung in Safari auszulösen. Dies bewirkt, dass der Browser auf dem Gerät kurz gestartet wird.

Empfangen einer Übertragung zur Erkennung einer von anderen Anwendungen initiierten globalen Abmeldung

Um die Übertragung für eine Kontoänderung zu empfangen, müssen Sie einen Übertragungsempfänger registrieren. Wenn eine Kontoänderungsübertragung empfangen wird, rufen Sie sofort die angemeldeten Benutzer*innen ab und ermitteln, ob Benutzer*innen auf dem Gerät geändert wurden. Wenn eine Änderung erkannt wird, initiieren Sie die Datenbereinigung für ein zuvor angemeldetes Konto. Es wird empfohlen, alle Vorgänge ordnungsgemäß zu beenden und eine Datenbereinigung durchzuführen.

Der folgende Codeausschnitt zeigt, wie Sie einen Übertragungsempfänger registrieren können.

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 

} 

Weitere Informationen zu den verfügbaren Optionen für CFNotificationAddObserver oder zum Anzeigen der entsprechenden Methodensignaturen in Swift finden Sie unter:

Für iOS benötigt Ihre App eine Hintergrundberechtigung, um im Hintergrund aktiv zu bleiben und auf Darwin-Benachrichtigungen zu lauschen. Die Hintergrundfunktion muss hinzugefügt werden, um einen anderen Hintergrundvorgang zu unterstützen. Ihre App kann vom Apple-App Store abgelehnt werden, wenn sie nur auf Darwin-Benachrichtigungen lauschen kann. Wenn Ihre App bereits für Hintergrundvorgänge konfiguriert ist, können Sie den Listener als Teil dieses Vorgangs hinzufügen. Weitere Informationen zu iOS-Hintergrundfunktionen finden Sie unter Konfigurieren von Hintergrundausführungsmodi.

Microsoft-Anwendungen, die den Modus für gemeinsam genutzte Geräte unterstützen

Folgende Microsoft-Anwendungen unterstützen den Modus für gemeinsam genutzte Geräte von Microsoft Entra:

Wichtig

Die öffentliche Vorschauversion (Public Preview) wird ohne Vereinbarung zum Servicelevel bereitgestellt und empfiehlt sich nicht für Produktionsworkloads. Einige Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Universelle Lizenzbedingungen für Onlinedienste.

Nächste Schritte

Das folgende Codebeispiel auf GitHub umfasst ein Beispiel für das Ausführen einer App für Mitarbeiter in Service und Produktion auf einem iOS-Gerät im Modus für gemeinsam genutzte Geräte, um diesen Modus in Aktion zu zeigen:

MSAL: iOS-Beispiel in Swift und Microsoft Graph-API