Sdílet prostřednictvím


Režim sdíleného zařízení pro zařízení s Androidem

Pracovníci frontline, jako jsou maloobchodní spolupracovníci, členové letové posádky a služby u zákazníků pracovníci často používají ke své práci sdílené mobilní zařízení. Tato sdílená zařízení můžou představovat bezpečnostní rizika, pokud uživatelé sdílejí svá hesla nebo PIN kódy záměrně nebo ne, aby měli přístup k zákaznickým a obchodním datům na sdíleném zařízení.

Režim sdíleného zařízení umožňuje nakonfigurovat zařízení s Androidem 8.0 nebo vyšším tak, aby zaměstnanci mohli zařízení bezpečně sdílet. Zaměstnanci se můžou jednou přihlásit a získat jednotné přihlašování ke všem aplikacím, které tuto funkci podporují, a tím jim umožnit rychlejší přístup k informacím. Když se zaměstnanci po dokončení směny nebo úkolu odhlásí, automaticky se odhlásí ze zařízení a ze všech podporovaných aplikací, aby bylo zařízení připravené pro dalšího uživatele.

Pokud chcete využívat funkci režimu sdíleného zařízení, vývojáři aplikací a správci cloudových zařízení spolupracují:

  1. Správci zařízení připraví zařízení na ruční sdílení nebo pomocí poskytovatele správy mobilních zařízení (MDM), jako je Microsoft Intune. Upřednostňovanou možností je použití MDM, protože umožňuje nastavení zařízení ve sdíleném režimu zařízení ve velkém měřítku prostřednictvím zřizování bez dotykového ovládání. MDM odešle aplikaci Microsoft Authenticator do zařízení a zapne pro každé zařízení sdílený režim prostřednictvím spravované aktualizace konfigurace do zařízení. Toto nastavení sdíleného režimu mění chování podporovaných aplikací na zařízení. Tato konfigurace od poskytovatele MDM nastaví režim sdíleného zařízení pro zařízení a aktivuje registraci sdíleného zařízení pomocí aplikace Authenticator.

  2. Vývojáři aplikací píší aplikaci s jedním účtem (aplikace s více účty nejsou podporované v režimu sdíleného zařízení), aby zvládli následující scénář:

    • Přihlášení uživatele přes libovolnou podporovanou aplikaci
    • Odhlaste se ze zařízení uživatele prostřednictvím jakékoli podporované aplikace.
    • Zadejte dotaz na stav zařízení a zjistěte, jestli je vaše aplikace v zařízení, které je v režimu sdíleného zařízení.
    • Zadejte dotaz na stav zařízení uživatele a určete změny v aplikaci od posledního použití.

    Podpora režimu sdíleného zařízení by měla být považována za upgrade funkcí pro vaši aplikaci a může pomoct zvýšit její přijetí v prostředích, kde se stejné zařízení používá mezi více uživateli.

    Důležitý

    Aplikace Microsoftu, které podporují režim sdíleného zařízení v Androidu, nevyžadují žádné změny a stačí je na zařízení nainstalovat, abyste získali výhody, které jsou součástí režimu sdíleného zařízení.

Nastavení zařízení v režimu sdíleného zařízení

Pokud chcete nakonfigurovat zařízení s Androidem tak, aby podporovalo režim sdíleného zařízení, mělo by běžet na androidu OS 8.0 nebo novějším. Zařízení by také mělo být vymazáno obnovením továrního nastavení nebo všechny aplikace s povoleným režimem sdíleného zařízení a dalšími aplikacemi microsoftu a jejich opětovnou instalací.

Microsoft Intune podporuje zřizování zařízení v režimu sdíleného zařízení Microsoft Entra bez dotykového ovládání, což znamená, že zařízení je možné nastavit a zaregistrovat v Intune s minimální interakcí od pracovníka frontline. Pokud chcete nastavit zařízení v režimu sdíleného zařízení při použití Microsoft Intune jako MDM, přečtěte si téma Nastavení registrace pro zařízení v režimu sdíleného zařízení Microsoft Entra.

Úprava aplikace pro Android tak, aby podporovala režim sdíleného zařízení

Vaši uživatelé závisejí na vás, abyste zajistili, že jejich data nebudou unikla jinému uživateli. Následující části poskytují užitečné signály, které značí aplikaci, že došlo ke změně a měla by se zpracovat. Zodpovídáte za kontrolu stavu uživatele na zařízení při každém použití aplikace a následném vymazání dat předchozího uživatele. To zahrnuje, pokud se znovu načte z pozadí ve více úlohách. Při změně uživatele byste měli zajistit vymazání dat předchozího uživatele a odebrání všech dat uložených v mezipaměti ve vaší aplikaci. Důrazně doporučujeme, abyste vy a vaše společnost provedli proces kontroly zabezpečení po aktualizaci aplikace tak, aby podporoval režim sdíleného zařízení.

Přidání sady MICROSOFT Authentication Library (MSAL) SDK do závislostí vaší aplikace

Do souboru build.gradle přidejte knihovnu MSAL jako závislost, například takto:

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

Konfigurace aplikace pro použití režimu sdíleného zařízení

Aplikace napsané pomocí sady MICROSOFT Authentication Library (MSAL) SDK můžou spravovat jeden nebo více účtů. Podrobnosti najdete v režimu jednoho účtu nebo režimu více účtů. Aplikace režimu sdíleného zařízení fungují jenom v režimu s jedním účtem.

Pokud neplánujete podporovat režim více účtů, nastavte "account_mode" ho v "SINGLE" konfiguračním souboru msal. To zaručuje, že se vaše aplikace bude vždy získávat ISingleAccountPublicClientApplicationa výrazně zjednodušuje integraci MSAL. Výchozí hodnota "account_mode" je "MULTIPLE", takže je důležité změnit tuto hodnotu v konfiguračním souboru, pokud používáte "single account" režim.

Tady je příklad konfiguračního souboru:

{
  "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"
      }
    }
  ]
}

Další informace o nastavení konfiguračního souboru najdete v dokumentaci ke konfiguraci.

Podpora jednoho účtu i více účtů

Aplikaci můžete vytvořit tak, aby podporovala provoz na osobních zařízeních i sdílených zařízeních. Pokud vaše aplikace aktuálně podporuje více účtů a chcete podporovat režim sdíleného zařízení, přidejte podporu pro režim jednoho účtu.

Můžete také chtít, aby aplikace změnila své chování v závislosti na typu zařízení, na kterém běží. Slouží ISingleAccountPublicClientApplication.isSharedDevice() k určení, kdy se má spustit v režimu s jedním účtem.

Existují dvě různá rozhraní, která představují typ zařízení, na které je vaše aplikace zapnutá. Když požádáte o instanci aplikace z objektu pro vytváření aplikací MSAL, zobrazí se automaticky správný objekt aplikace.

Následující objektový model znázorňuje typ objektu, který můžete obdržet a co to znamená v kontextu sdíleného zařízení:

Model dědičnosti veřejných klientských aplikací

Při získání PublicClientApplication objektu musíte provést kontrolu typu a přetypovat na příslušné rozhraní. Následující kód zkontroluje režimy více účtů nebo režimy jednoho účtu a odpovídajícím způsobem přetypuje objekt aplikace:

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

Následující rozdíly platí v závislosti na tom, jestli je vaše aplikace spuštěná na sdíleném nebo osobním zařízení:

Zařízení sdíleného režimu Osobní zařízení
Účty Jeden účet Více účtů
Přihlášení Globální Globální
Odhlaste se Globální Každá aplikace může řídit, jestli je odhlášení místní k aplikaci.
Podporované typy účtů Pouze pracovní účty Podporované osobní a pracovní účty

Inicializace objektu PublicClientApplication

Pokud jste nastavili "account_mode":"SINGLE" v konfiguračním souboru MSAL, můžete vrácený objekt aplikace bezpečně přetypovat jako ISingleAccountPublicCLientApplicationobjekt aplikace .

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 */
        }
    });

Detekce režimu sdíleného zařízení

Detekce režimu sdíleného zařízení je pro vaši aplikaci důležitá. Mnoho aplikací vyžaduje změnu uživatelského prostředí(UX), když se aplikace používá na sdíleném zařízení. Vaše aplikace může mít například funkci Registrace, která není vhodná pro pracovníka front-line, protože pravděpodobně už účet mají. Pokud je aplikace v režimu sdíleného zařízení, můžete také chtít přidat další zabezpečení pro zpracování dat.

isSharedDevice Pomocí rozhraní API v rozhraní IPublicClientApplication API určete, jestli je aplikace spuštěná na zařízení v režimu sdíleného zařízení.

Následující fragmenty kódu ukazují příklady použití isSharedDevice rozhraní API.

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

Získání přihlášeného uživatele a určení, jestli se uživatel na zařízení změnil

Další důležitou součástí podpory režimu sdíleného zařízení je určení stavu uživatele v zařízení a vymazání dat aplikace, pokud se uživatel změnil nebo jestli na zařízení vůbec není žádný uživatel. Zodpovídáte za to, že se data nevracela jinému uživateli.

K dotazování aktuálně přihlášeného účtu na zařízení můžete použít getCurrentAccountAsync rozhraní API.

Metoda loadAccount načte účet přihlášeného uživatele. Metoda onAccountChanged určuje, jestli se přihlášený uživatel změnil, a pokud ano, vyčistěte:

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

Globální přihlášení uživatele

Když je zařízení nakonfigurované jako sdílené zařízení, může vaše aplikace volat signIn rozhraní API pro přihlášení k účtu. Účet bude globálně dostupný pro všechny oprávněné aplikace na zařízení po přihlášení první aplikace k účtu.

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

Globální odhlášení uživatele

Následující kód odebere přihlášený účet a vymaže tokeny uložené v mezipaměti nejen z aplikace, ale také ze zařízení, které je v režimu sdíleného zařízení. Neujasní ale data z vaší aplikace. Musíte vymazat data z vaší aplikace a vymazat všechna data uložená v mezipaměti, která aplikace může uživateli zobrazovat.

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

Příjem vysílání pro detekci globálního odhlašování iniciovaného z jiných aplikací

Pokud chcete přijmout vysílání změn účtu, musíte zaregistrovat přijímač vysílání. Doporučujeme zaregistrovat přijímač vysílání prostřednictvím kontextově registrovaných přijímačů.

Po přijetí vysílání změny účtu okamžitě získejte přihlášeného uživatele a určete, jestli se uživatel na zařízení změnil. Pokud se zjistí změna, zahajte vyčištění dat pro dříve přihlášený účet. Doporučuje se správně zastavit všechny operace a vyčistit data.

Následující fragment kódu ukazuje, jak můžete zaregistrovat přijímač vysílání.

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

Aplikace Microsoftu, které podporují režim sdíleného zařízení

Tyto aplikace Microsoftu podporují režim sdíleného zařízení Microsoft Entra:

MdM třetích stran, které podporují režim sdíleného zařízení

Tito poskytovatelé mobilních Správa zařízení (MDM) třetích stran podporují režim sdíleného zařízení Microsoft Entra:

Odhlášení ze sdíleného zařízení a celkový životní cyklus aplikace

Když se uživatel odhlásí, musíte podniknout kroky k ochraně osobních údajů a dat uživatele. Pokud například vytváříte aplikaci lékařských záznamů, je potřeba zajistit, aby se při odhlášení uživatele dříve zobrazené záznamy pacientů vymaže. Aplikace musí být připravená na ochranu osobních údajů a kontrolovat při každém vstupu do popředí.

Když vaše aplikace používá MSAL k odhlášení uživatele v aplikaci spuštěné na zařízení, které je ve sdíleném režimu, odeberou se z aplikace i ze zařízení přihlášený účet a tokeny uložené v mezipaměti.

Následující diagram znázorňuje celkový životní cyklus aplikace a běžné události, ke kterým může dojít při spuštění aplikace. Diagram se zabývá časem spuštění aktivity, přihlášením a odhlášením účtu a tím, jak se události, jako je pozastavení, obnovení a zastavení aktivity, vejdou.

Životní cyklus sdílené aplikace zařízení

Další kroky

Nastavte zařízení s Androidem pro spouštění aplikací v režimu sdíleného zařízení a otestování aplikace.

Režim sdíleného zařízení pro zařízení s Androidem