Teilen über


Modus für gemeinsam genutzte Geräte für Android-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.

Der Modus für gemeinsam genutzte Geräte ermöglicht es Ihnen, ein Gerät mit Android 8.0 oder höher so zu konfigurieren, dass Mitarbeitende das Gerät sicher gemeinsam nutzen können. 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 sich Mitarbeitende nach Abschluss ihrer Schicht oder Aufgabe abmelden, werden sie automatisch vom Gerät und allen unterstützten Anwendungen abgemeldet, sodass das Gerät für die nächsten Benutzenden bereit ist.

Um die Vorteile der Funktion für den gemeinsamen Gerätemodus zu nutzen, arbeiten App-Entwickelnde und Administrierende von Cloud-Geräten zusammen:

  1. Geräteadministratoren bereiten das Gerät für die gemeinsame Nutzung manuell oder mithilfe eines Anbieters für die Verwaltung mobiler Geräte (MDM) wie Microsoft Intune vor. Die Voreinstellung ist die Verwendung eines MDM, da es die Einrichtung des Geräts im Modus für gemeinsam genutzte Geräte im großen Maßstab über Zero-Touch-Bereitstellung ermöglicht. Der MDM überträgt die Microsoft Authenticator-App auf die Geräte und aktiviert den gemeinsamen Modus für jedes Gerät über ein verwaltetes Konfigurationsupdate für das Gerät. 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 den Modus für gemeinsam genutzte Geräte für das Gerät fest und löst die Registrierung gemeinsam genutzter Geräte mithilfe der Authenticator-App aus.

  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 auf einem Benutzergerät über eine beliebige unterstützte Anwendung
    • Geräteweites Abmelden auf einem Benutzergerät über eine beliebige 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
    • Abfrage des Gerätestatus der Benutzenden, um festzustellen, ob seit der letzten Verwendung Änderungen in Ihrer Anwendung vorgenommen wurden

    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 auf Android 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

Um Ihr Android-Gerät so zu konfigurieren, dass der Modus für gemeinsam genutzte Geräte unterstützt wird, sollte Android OS 8.0 oder höher ausgeführt werden. Das Gerät sollte außerdem entweder auf die Werkseinstellungen zurückgesetzt werden oder alle Apps, die den Modus für gemeinsam genutzte Geräte von Microsoft und anderen Anbietern aktiviert haben, sollten deinstalliert und neu installiert 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.

Ändern Ihrer Android-Anwendung, um den Modus für gemeinsam genutzte Geräte zu unterstützen

Sie müssen sicherstellen, dass die Daten eines Benutzers nicht an andere Benutzer gelangen. 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.

Hinzufügen des MSAL-SDK (Microsoft Authentication Library) zu den Abhängigkeiten Ihrer Anwendung

Fügen Sie die MSAL-Bibliothek als Abhängigkeit in Ihre build.gradle-Datei ein, beispielsweise wie folgt:

dependencies{
  implementation 'com.microsoft.identity.client.msal:5.+'
}

Konfigurieren Ihrer App für den Modus für gemeinsam genutzte Geräte

In Anwendungen, die mit dem Microsoft Authentication Library (MSAL) SDK geschrieben wurden, können ein einzelnes Konto oder mehrere Konten verwaltet werden. Weitere Informationen finden Sie unter Modus für einzelne und mehrere Konten. Apps mit dem Modus für gemeinsam genutzte Geräte können nur im Modus für einzelne Konten verwendet werden.

Wenn Sie nicht vorhaben, den Mehrfachkontenmodus zu unterstützen, setzen Sie "account_mode" in Ihrer msal-Konfigurationsdatei auf "SINGLE". So wird sichergestellt, dass für Ihre App immer ISingleAccountPublicClientApplication genutzt wird, und die MSAL-Integration wird erheblich vereinfacht. Der Standardwert von "account_mode" lautet "MULTIPLE", daher ist es wichtig, diesen Wert in der Konfigurationsdatei zu ändern, wenn Sie den Modus "single account" verwenden.

Hier ist ein Beispiel für eine Konfigurationsdatei:

{
  "client_id": "Client ID after app registration at https://aka.ms/MobileAppReg",
  "authorization_user_agent": "WEBVIEW",
  "redirect_uri": "Redirect URI after app registration at https://aka.ms/MobileAppReg",
  "account_mode": "SINGLE",
  "broker_redirect_uri_registered": true,
  "authorities": [
    {
      "type": "AAD",
      "audience": {
        "type": "AzureADandPersonalMicrosoftAccount",
        "tenant_id": "common"
      }
    }
  ]
}

Weitere Informationen zum Einrichten Ihrer config-Datei finden Sie in der Dokumentation zur Konfiguration.

Unterstützung einzelner Konten sowie mehrerer Konten

Die App kann so erstellt werden, dass sie auf persönlichen sowie auf gemeinsam genutzten Geräten ausgeführt werden kann. Wenn Ihre App derzeit mehrere Konten unterstützt und der Modus für gemeinsam genutzte Geräte unterstützt werden soll, fügen Sie die Unterstützung für den Modus für einzelne Konten hinzu.

Sie können auch festlegen, dass sich das Verhalten der App je nach dem Gerätetyp ändert, auf dem sie ausgeführt wird. Verwenden Sie ISingleAccountPublicClientApplication.isSharedDevice(), um festzulegen, wann der Modus für einzelne Konten ausgeführt werden soll.

Es gibt zwei verschiedene Schnittstellen, die den Typ des Geräts darstellen, auf dem die Anwendung ausgeführt wird. Wenn Sie eine Anwendungsinstanz aus der MSAL-Anwendungsfactory anfordern, wird automatisch das richtige Anwendungsobjekt bereitgestellt.

Im folgenden Objektmodell sind der Objekttyp, den Sie möglicherweise erhalten, und seine Bedeutung im Kontext gemeinsam genutzter Geräte dargestellt:

Vererbungsmodell einer öffentlichen Clientanwendung

Sie müssen eine Typüberprüfung und -umwandlung zur entsprechenden Schnittstelle durchführen, wenn Sie das PublicClientApplication-Objekt erhalten. Der folgende Code überprüft, ob der Modus für mehrere Konten oder der Modus für einzelne Konten aktiv ist und wandelt das Anwendungsobjekt entsprechend um:

private IPublicClientApplication mApplication;

        // Running in personal-device mode?
        if (mApplication instanceOf IMultipleAccountPublicClientApplication) {
          IMultipleAccountPublicClientApplication multipleAccountApplication = (IMultipleAccountPublicClientApplication) mApplication;
          ...
        // Running in shared-device mode?
        } else if (mApplication instanceOf ISingleAccountPublicClientApplication) {
           ISingleAccountPublicClientApplication singleAccountApplication = (ISingleAccountPublicClientApplication) mApplication;
            ...
        }

Folgende Unterschiede gelten in Abhängigkeit davon, ob die App auf einem gemeinsam genutzten oder einem persönlichen Gerät ausgeführt wird:

Gerät im Modus für gemeinsam genutzte Geräte Persönliches Gerät
Konten Einzelnes Konto Mehrere Konten
Anmeldung Global Global
Abmeldung Global In jeder Anwendung kann gesteuert werden, ob die Abmeldung lokal für die Anwendung erfolgt.
Unterstützte Kontotypen Nur Geschäftskonten Persönliche Konten und Arbeitskonten werden unterstützt

Initialisieren des PublicClientApplication-Objekts

Wenn Sie "account_mode":"SINGLE" in der config-Datei für MSAL festlegen, können Sie das zurückgegebene Anwendungsobjekt problemlos in ein ISingleAccountPublicCLientApplication-Element umwandeln.

private ISingleAccountPublicClientApplication mSingleAccountApp;

PublicClientApplication.create(
    this.getApplicationCOntext(),
    R.raw.auth_config_single_account,
    new PublicClientApplication.ApplicationCreatedListener() {

        @Override
        public void onCreated(IPublicClientApplication application){
            mSingleAccountApp = (ISingleAccountPublicClientApplication)application;
        }

        @Override
        public void onError(MsalException exception){
            /*Fail to initialize PublicClientApplication */
        }
    });

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 isSharedDevice-API in IPublicClientApplication, 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 isSharedDevice-API.

deviceModeTextView.setText(mSingleAccountApp.isSharedDevice() ? "Shared" : "Non-Shared");

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 getCurrentAccountAsync-API können Sie das derzeit angemeldete Konto auf dem Gerät abfragen.

Mit der loadAccount-Methode wird das Konto des angemeldeten Benutzers abgerufen. Mit der onAccountChanged-Methode wird ermittelt, ob sich der angemeldete Benutzer geändert hat. Wenn dies der Fall ist, wird eine Bereinigung durchgeführt:

private void loadAccount()
{
  mSingleAccountApp.getCurrentAccountAsync(new ISingleAccountPublicClientApplication.CurrentAccountCallback())
  {
    @Override
    public void onAccountLoaded(@Nullable IAccount activeAccount)
    {
      if (activeAccount != null)
      {
        signedInUser = activeAccount;
        final AcquireTokenSilentParameters silentParameters = new AcquireTokenSilentParameters.Builder()
                        .fromAuthority(signedInUser.getAuthority())
                        .forAccount(signedInUser)
                        .withScopes(Arrays.asList(getScopes()))
                        .withCallback(getAuthSilentCallback())
                        .build();
        mSingleAccountApp.acquireTokenSilentAsync(silentParameters);
      }
    }
    @Override
    public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable Iaccount currentAccount)
    {
      if (currentAccount == null)
      {
        //Perform a cleanup task as the signed-in account changed.
        cleaUp();
      }
    }
    @Override
    public void onError(@NonNull Exception exception)
    {
        //getCurrentAccountAsync failed
    }
  }
}

Globales Anmelden eines Benutzers

Wenn ein Gerät als gemeinsam genutztes Gerät konfiguriert ist, kann Ihre Anwendung die signIn-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.

final SignInParameters signInParameters = ... /* create SignInParameters object */
mSingleAccountApp.signIn(signInParameters);

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.

mSingleAccountApp.signOut(new ISingleAccountPublicClientApplication.SignOutCallback() {
    @Override
    public void onSignOut() {
        // clear data from your application
    }

    @Override
    public void onError(@NonNull MsalException exception) {
        // signout failed, show error
    }
});

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. Es wird empfohlen, Ihren Broadcastempfänger über die im Kontext registrierten Empfänger zu 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.

private static final String CURRENT_ACCOUNT_CHANGED_BROADCAST_IDENTIFIER = "com.microsoft.identity.client.sharedmode.CURRENT_ACCOUNT_CHANGED";
private BroadcastReceiver mAccountChangedBroadcastReceiver;
private void registerAccountChangeBroadcastReceiver(){
    mAccountChangedBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            //INVOKE YOUR PRIOR ACCOUNT CLEAN UP LOGIC HERE
        }
    };
    IntentFilter filter = new

    IntentFilter(CURRENT_ACCOUNT_CHANGED_BROADCAST_IDENTIFIER);
    this.registerReceiver(mAccountChangedBroadcastReceiver, filter);
}

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:

Drittanbieter-MDMs, die den Modus für gemeinsam genutzte Geräte unterstützen

Diese Drittanbieter für die Verwaltung mobiler Geräte (MDM) unterstützen den Microsoft Entra Shared Device Modus:

Abmeldung bei gemeinsam genutzten Geräten und der allgemeine App-Lebenszyklus

Sie müssen Maßnahmen zum Schutz der Privatsphäre und der Daten von Benutzer*innen einrichten, wenn diese sich abmelden. Wenn Sie z. B. eine App für Patientendaten erstellen, müssen Sie sicherstellen, dass beim Abmelden von Benutzer*innen die zuvor angezeigten Patientendaten entfernt werden. Die Anwendung muss auf Privacy- und Datenschutzgesetze vorbereitet werden und deren Einhaltung jedes Mal überprüfen, wenn sie im Vordergrund ausgeführt wird.

Bei Verwendung der MSAL in der App zum Abmelden eines Benutzers von einer App, die auf einem Gerät mit dem Modus für gemeinsam genutzte Geräte ausgeführt wird, werden das angemeldete Konto und die zwischengespeicherten Token sowohl in der App als auch auf dem Gerät entfernt.

Im folgenden Diagramm sind der gesamte App-Lebenszyklus und allgemeine Ereignisse dargestellt, die beim Ausführen der App eintreten können. Das Diagramm zeigt den Zeitpunkt des Starts einer Aktivität, die An- und Abmeldung bei einem Konto sowie die Art und Weise, wie sich Ereignisse wie z. B. das Unterbrechen, Fortsetzen und Beenden der Aktivität einfügen.

App-Lebenszyklus eines gemeinsam genutzten Geräts

Nächste Schritte

Richten Sie ein Android-Gerät ein, um Apps im Modus für gemeinsam genutzte Geräte auszuführen und Ihre App zu testen.

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