Tutorial: Verwenden des Modus für gemeinsam genutzte Geräte in Ihrer Android-Anwendung
In diesem Tutorial lernen Android-Entwickler*innen und Administrator*innen von Microsoft Entra-Mandanten (Azure AD) den Code, die Authenticator-App und die Mandanteneinstellungen kennen, die erforderlich sind, um den Modus für gemeinsam genutzte Geräte für eine Android-App zu aktivieren.
Dieses Tutorial umfasst folgende Punkte:
- Herunterladen eines Codebeispiels
- Aktivieren und Erkennen des Modus für gemeinsam genutzte Geräte
- Erkennen des Modus für ein bzw. mehrere Konten
- Erkennen eines Benutzerwechsels und Aktivieren der globalen An- und Abmeldung
- Einrichten des Mandanten und Registrieren der Anwendung
- Einrichten eines Android-Geräts im Modus für gemeinsam genutzte Geräte
- Ausführen der Beispiel-App
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
Entwicklerhandbuch
Dieser Abschnitt des Tutorials enthält eine Anleitung für Entwickler zum Implementieren des Modus für gemeinsam genutzte Geräte in einer Android-Anwendung mithilfe der Microsoft-Authentifizierungsbibliothek (MSAL). Informationen zum Integrieren der MSAL in Ihre Android-App, Anmelden eines Benutzers, Aufrufen des Microsoft-Graphen und Abmelden eines Benutzers finden Sie im Tutorial zu MSAL für Android.
Herunterladen des Beispiels
Klonen Sie die Beispielanwendung über GitHub. Das Beispiel funktioniert im Modus mit einem oder mehreren Konten.
Hinzufügen des MSAL SDK zu Ihrem lokalen Maven-Repository
Falls Sie die Beispiel-App nicht verwenden, müssen Sie die MSAL der Datei „build.gradle“ wie folgt hinzufügen:
dependencies{
implementation 'com.microsoft.identity.client.msal:4.9.+'
}
Konfigurieren Ihrer App für den Modus für gemeinsam genutzte Geräte
Weitere Informationen zum Einrichten Ihrer config-Datei finden Sie in der Dokumentation zur Konfiguration.
Legen Sie "shared_device_mode_supported"
in Ihrer MSAL-Konfigurationsdatei auf true
fest.
Es kann auch sein, dass Sie die Unterstützung des Modus mit mehreren Konten nicht planen. Dies kann beispielsweise der Fall sein, wenn Sie kein gemeinsam genutztes Gerät verwenden und Benutzer sich mit mehr als einem Konto gleichzeitig an der App anmelden können. Falls dies zutrifft, sollten Sie "account_mode"
auf "SINGLE"
festlegen. 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 die Datei „auth_config.json“ angegeben, die im Verzeichnis app>main>res>raw der Beispiel-App enthalten ist:
{
"client_id": "Client ID after app registration at https://aka.ms/MobileAppReg",
"authorization_user_agent": "DEFAULT",
"redirect_uri": "Redirect URI after app registration at https://aka.ms/MobileAppReg",
"account_mode": "SINGLE",
"broker_redirect_uri_registered": true,
"shared_device_mode_supported": true,
"authorities": [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount",
"tenant_id": "common"
}
}
]
}
Erkennen des Modus für gemeinsam genutzte Geräte
Im Modus für gemeinsam genutzte Geräte können Sie Android-Geräte so konfigurieren, dass sie von mehreren Mitarbeitern gemeinsam genutzt werden können, während gleichzeitig eine auf Microsoft Identity basierende Verwaltung der Geräte erfolgt. Mitarbeiter können sich bei ihren Geräten anmelden und schnell auf Kundeninformationen zugreifen. Nachdem die Mitarbeiter ihre Schicht oder Aufgabe beendet haben, können sie sich mit nur einem Klick von allen Apps auf dem freigegebenen Gerät abmelden, und das Gerät ist dann sofort für die Nutzung durch den nächsten Mitarbeiter bereit.
Ermitteln Sie mit isSharedDevice()
, ob eine App auf einem Gerät ausgeführt wird, das sich im Modus für gemeinsam genutzte Geräte befindet. Anhand dieses Flags kann Ihre App ermitteln, ob die Benutzeroberfläche entsprechend geändert werden soll.
Im Codeausschnitt unten wird veranschaulicht, wie Sie isSharedDevice()
nutzen können. Er stammt aus der SingleAccountModeFragment
-Klasse in der Beispiel-App:
deviceModeTextView.setText(mSingleAccountApp.isSharedDevice() ? "Shared" : "Non-Shared");
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;
/*Configure your sample app and save state for this activity*/
PublicClientApplication.create(this.getApplicationCOntext(),
R.raw.auth_config,
new PublicClientApplication.ApplicationCreatedListener(){
@Override
public void onCreated(IPublicClientApplication application){
mSingleAccountApp = (ISingleAccountPublicClientApplication)application;
loadAccount();
}
@Override
public void onError(MsalException exception){
/*Fail to initialize PublicClientApplication */
}
});
Erkennen des Moduls für ein bzw. mehrere Konten
Wenn Sie eine App schreiben, die nur für Mitarbeiter in Service und Produktion auf einem gemeinsam genutzten Gerät eingesetzt wird, empfehlen wir Ihnen, für die App nur die Unterstützung des Modus mit einem einzelnen Konto vorzusehen. Dies gilt für die meisten Anwendungen, bei denen es um die Abarbeitung von Aufgaben geht, z. B. in Apps für Gesundheitsdaten oder Abrechnungsvorgänge und den meisten branchenspezifischen Apps. Auf diese Weise wird die Entwicklungsarbeit vereinfacht, weil viele Features des SDK nicht abgedeckt werden müssen.
Wenn Ihre App mehrere Konten und den Modus für freigegebene Geräte unterstützt, müssen Sie eine Typüberprüfung und Umwandlung auf die entsprechende Schnittstelle durchführen, wie unten beschrieben.
private IPublicClientApplication mApplication;
if (mApplication instanceOf IMultipleAccountPublicClientApplication) {
IMultipleAccountPublicClientApplication multipleAccountApplication = (IMultipleAccountPublicClientApplication) mApplication;
...
} else if (mApplication instanceOf ISingleAccountPublicClientApplication) {
ISingleAccountPublicClientApplication singleAccountApplication = (ISingleAccountPublicClientApplication) mApplication;
...
}
Abrufen des angemeldeten Benutzers und Ermitteln, ob sich der Benutzer des Geräts geändert hat
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;
mSingleAccountApp.acquireTokenSilentAsync(SCOPES,"http://login.microsoftonline.com/common",getAuthSilentCallback());
}
}
@Override
public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable Iaccount currentAccount)
{
if (currentAccount == null)
{
//Perform a cleanup task as the signed-in account changed.
updateSingedOutUI();
}
}
@Override
public void onError(@NonNull Exception exception)
{
}
}
}
Globales Anmelden eines Benutzers
Hiermit wird ein Benutzer über das Gerät mit der Authenticator-App bei anderen Apps angemeldet, die MSAL verwenden:
private void onSignInClicked()
{
mSingleAccountApp.signIn(getActivity(), SCOPES, null, getAuthInteractiveCallback());
}
Globales Abmelden eines Benutzers
Mit dem folgenden Code wird das angemeldete Konto entfernt, und zwischengespeicherte Token werden nicht nur für die App gelöscht, sondern auch von dem Gerät, das sich im Modus für die gemeinsame Nutzung befindet:
private void onSignOutClicked()
{
mSingleAccountApp.signOut(new ISingleAccountPublicClientApplication.SignOutCallback()
{
@Override
public void onSignOut()
{
updateSignedOutUI();
}
@Override
public void onError(@NonNull MsalException exception)
{
/*failed to remove account with an exception*/
}
});
}
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);
}
Administratorhandbuch
Die folgenden Schritten beschreiben, wie Sie Ihre Anwendung einrichten und für Ihr Gerät den Modus für die gemeinsame Nutzung festlegen.
Registrieren der Anwendung
Registrieren Sie als Erstes Ihre Anwendung bei Ihrem Organisationsmandanten. Geben Sie anschließend die unten angegebenen Werte in „auth_config.json“ ein, damit Ihre Anwendung richtig ausgeführt wird.
Weitere Informationen zur Vorgehensweise finden Sie unter Anwendung registrieren.
Hinweis
Verwenden Sie beim Registrieren Ihrer App die Schnellstartanleitung auf der linken Seite, und wählen Sie Android aus. Sie gelangen auf eine Seite, auf der Sie zum Eingeben von Paketname und Signaturhash für Ihre App aufgefordert werden. Dies ist sehr wichtig, um sicherzustellen, dass Ihre App-Konfiguration funktioniert. Sie erhalten dann ein Konfigurationsobjekt für Ihre App, das Sie ausschneiden und in die Datei „auth_config.json“ einfügen können.
Sie sollten die Option Diese Änderung für mich vornehmen auswählen, und dann Werte angeben, welche von der Schnellstartanleitung angefragt werden. Nach Abschluss dieses Vorgangs wir alle Konfigurationsdateien generieren, die Sie benötigen.
Einrichten eines Mandanten
Richten Sie zu Testzwecken auf Ihrem Mandanten Folgendes ein: mindestens zwei Mitarbeiter, einen Cloudgeräteadministrator und einen globalen Administrator. Legen Sie im Azure-Portal den Cloudgeräteadministrator fest, indem Sie Organisationsrollen ändern. Greifen Sie auf Ihre Organisationsrollen zu, indem Sie Identität>Rollen und Administratoren>Rollen und Administratoren>Alle Rollen und dann Cloudgeräteadministrator auswählen. Fügen Sie die Benutzer hinzu, die ein Gerät in den Modus für gemeinsam genutzte Geräte versetzen können.
Einrichten eines Android-Geräts im gemeinsam genutzten Modus
Herunterladen der Authenticator-App
Laden Sie die Microsoft Authenticator-App aus dem Google Play Store herunter. Wenn Sie die App bereits heruntergeladen haben, sollten Sie sicherstellen, dass es sich um die aktuelle Version handelt.
Einstellungen der Authenticator-App und Registrieren des Geräts in der Cloud
Starten Sie die Authenticator-App, und navigieren Sie zur Hauptseite des Kontos. Wenn die Seite Konto hinzufügen angezeigt wird, können Sie das Gerät für die gemeinsame Nutzung bereitstellen.
Wechseln Sie in der Menüleiste auf der rechten Seite zum Bereich Einstellungen. Wählen Sie unter Geschäfts-, Schul- oder Unikonten die Option Geräteregistrierung aus.
Wenn Sie auf diese Schaltfläche klicken, werden Sie aufgefordert, den Zugriff auf die Gerätekontakte zu autorisieren. Der Grund ist die Kontointegration von Android auf dem Gerät. Wählen Sie Zulassen aus.
Der Cloudgeräteadministrator sollte unter Oder als gemeinsam genutztes Gerät registrieren seine geschäftliche E-Mail-Adresse für die Organisation eingeben. Klicken Sie anschließend auf die Schaltfläche Als gemeinsam genutztes Gerät registrieren, und geben Sie Ihre Anmeldeinformationen ein.
Das Gerät befindet sich jetzt im Modus für gemeinsame Nutzung.
Alle An- und Abmeldungen auf dem Gerät sind globaler Art. Dies bedeutet, dass sie für alle Apps gelten, die in MSAL und Microsoft Authenticator auf dem Gerät integriert sind. Sie können nun Anwendungen auf dem Gerät bereitstellen, für die Funktionen des Modus für gemeinsam genutzte Geräte verwendet werden.
Anzeigen des gemeinsam genutzten Geräts
Nachdem Sie ein Gerät in den Modus für gemeinsame Nutzung versetzt haben, ist es für Ihre Organisation bekannt und wird im Organisationsmandanten nachverfolgt. Sie können Ihre gemeinsam genutzten Geräte anzeigen, indem Sie sich den Join-Typ ansehen.
Ausführen der Beispiel-App
Die Beispielanwendung ist eine einfache App, mit der die Graph-API Ihrer Organisation aufgerufen wird. Bei der ersten Ausführung werden Sie zum Einwilligen aufgefordert, weil es sich um eine neue Anwendung für Ihr Mitarbeiterkonto handelt.
Nächste Schritte
Hier erfahren Sie mehr über das Arbeiten mit der Microsoft-Authentifizierungsbibliothek und dem Modus für gemeinsam genutzte Geräte auf Android-Geräten:
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für