Kurz: Použití režimu sdíleného zařízení v aplikaci pro Android
V tomto kurzu se vývojáři pro Android a správci tenanta Microsoft Entra seznámí s kódem, aplikací Authenticator a nastavením tenanta vyžadovaným k povolení režimu sdíleného zařízení pro aplikaci pro Android.
V tomto kurzu:
- Stažení ukázky kódu
- Povolení a zjištění režimu sdíleného zařízení
- Detekce režimu jednoho nebo více účtů
- Zjištění přepínače uživatele a povolení globálního přihlášení a odhlášení
- Nastavení tenanta a registrace aplikace
- Nastavení zařízení s Androidem v režimu sdíleného zařízení
- Spuštění ukázkové aplikace
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
Příručka pro vývojáře
Tato část kurzu obsahuje pokyny pro vývojáře k implementaci režimu sdíleného zařízení v aplikaci pro Android pomocí knihovny MSAL (Microsoft Authentication Library). V kurzu MSAL Pro Android se dozvíte, jak integrovat MSAL s vaší aplikací pro Android, přihlásit se uživatele, volat Microsoft Graph a odhlásit uživatele.
Stažení ukázky
Naklonujte ukázkovou aplikaci z GitHubu. Ukázka má možnost pracovat v režimu jednoho nebo více účtů.
Přidání sady MSAL SDK do místního úložiště Maven
Pokud ukázkovou aplikaci nepoužíváte, přidejte knihovnu MSAL jako závislost do souboru build.gradle, například takto:
dependencies{
implementation 'com.microsoft.identity.client.msal:4.9.+'
}
Konfigurace aplikace pro použití režimu sdíleného zařízení
Další informace o nastavení konfiguračního souboru najdete v dokumentaci ke konfiguraci.
Nastavte "shared_device_mode_supported"
v konfiguračním true
souboru MSAL.
Možná neplánujete podporovat režim více účtů. To může být v případě, že nepoužíváte sdílené zařízení a uživatel se může k aplikaci přihlásit pomocí více účtů najednou. Pokud ano, nastavte "account_mode"
na "SINGLE"
hodnotu . To zaručuje, že se vaše aplikace bude vždy získávat ISingleAccountPublicClientApplication
a 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 souboru auth_config.json, který je součástí hlavního>adresáře res>> ukázkové aplikace:
{
"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"
}
}
]
}
Zjištění režimu sdíleného zařízení
Režim sdíleného zařízení umožňuje nakonfigurovat zařízení s Androidem tak, aby je sdílelo více zaměstnanců a současně poskytuje správu zařízení na základě identity Microsoftu. Zaměstnanci se můžou k zařízením přihlásit a rychle získat přístup k informacím o zákazníce. Po dokončení směny nebo úkolu se budou moct odhlásit ze všech aplikací na sdíleném zařízení jediným kliknutím a zařízení bude okamžitě připravené k použití dalšího zaměstnance.
Slouží isSharedDevice()
k určení, jestli je aplikace spuštěná na zařízení, které je v režimu sdíleného zařízení. Aplikace může tento příznak použít k určení, jestli by měla odpovídajícím způsobem upravovat uživatelské rozhraní.
Tady je fragment kódu, který ukazuje, jak můžete použít isSharedDevice()
. Pochází z SingleAccountModeFragment
třídy v ukázkové aplikaci:
deviceModeTextView.setText(mSingleAccountApp.isSharedDevice() ? "Shared" : "Non-Shared");
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 ISingleAccountPublicCLientApplication
objekt aplikace .
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 */
}
});
Detekce režimu jednoho nebo více účtů
Pokud píšete aplikaci, která se bude používat jenom pro pracovníky frontline na sdíleném zařízení, doporučujeme, abyste aplikaci napsali, aby podporovala jenom režim jednoho účtu. To zahrnuje většinu aplikací, které jsou zaměřeny na úkoly, jako jsou aplikace lékařské záznamy, aplikace faktury a většina obchodních aplikací. Tím se zjednoduší vývoj, protože mnoho funkcí sady SDK se nebude muset vyjmout.
Pokud vaše aplikace podporuje více účtů a režimu sdíleného zařízení, musíte provést kontrolu typu a přetypování na příslušné rozhraní, jak je znázorněno níže.
private IPublicClientApplication mApplication;
if (mApplication instanceOf IMultipleAccountPublicClientApplication) {
IMultipleAccountPublicClientApplication multipleAccountApplication = (IMultipleAccountPublicClientApplication) mApplication;
...
} else if (mApplication instanceOf ISingleAccountPublicClientApplication) {
ISingleAccountPublicClientApplication singleAccountApplication = (ISingleAccountPublicClientApplication) mApplication;
...
}
Získání přihlášeného uživatele a určení, jestli se uživatel na zařízení změnil
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;
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)
{
}
}
}
Globální přihlášení uživatele
Následující přihlášení uživatele na celém zařízení k jiným aplikacím, které používají MSAL s aplikací Authenticator:
private void onSignInClicked()
{
mSingleAccountApp.signIn(getActivity(), SCOPES, null, getAuthInteractiveCallback());
}
Globální odhlášení uživatele
Následující příkaz 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í:
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*/
}
});
}
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);
}
Příručka pro správce
Následující kroky popisují nastavení aplikace a umístění zařízení do režimu sdíleného zařízení.
Registrace aplikace
Nejprve zaregistrujte aplikaci v rámci tenanta vaší organizace. Potom do souboru auth_config.json zadejte následující hodnoty, aby vaše aplikace běžela správně.
Informace o tom, jak to udělat, najdete v tématu Registrace aplikace.
Poznámka:
Při registraci aplikace prosím použijte příručku pro rychlý start na levé straně a pak vyberte Android. Tím přejdete na stránku, kde budete požádáni o zadání názvu balíčku a hodnoty hash podpisu pro vaši aplikaci. To je velmi důležité, abyste zajistili, že vaše konfigurace aplikace bude fungovat. Pak obdržíte objekt konfigurace, který můžete použít pro aplikaci, kterou vyjmout a vložit do souboru auth_config.json.
Měli byste pro mě vybrat možnost Provést tuto změnu a pak zadat hodnoty, o které vás rychlý start požádá. Až to bude hotové, vygenerujeme všechny konfigurační soubory, které potřebujete.
Nastavení tenanta
Pro účely testování nastavte ve svém tenantovi následující: alespoň dva zaměstnance, jeden cloudový Správa istrator a jeden globální Správa istrator. Nastavte cloudový Správa istrator úpravou rolí organizace. Přístup k rolím organizace získáte tak, že vyberete role identit>a role správců>a všechny>role a pak vyberete Správa istrator cloudového zařízení. Přidejte uživatele, kteří můžou zařízení umístit do sdíleného režimu.
Nastavení zařízení s Androidem ve sdíleném režimu
Stažení aplikace Authenticator
Stáhněte si aplikaci Microsoft Authenticator z obchodu Google Play. Pokud už máte aplikaci staženou, ujistěte se, že se jedná o nejnovější verzi.
Nastavení aplikace Authenticator a registrace zařízení v cloudu
Spusťte aplikaci Authenticator a přejděte na hlavní stránku účtu. Jakmile se zobrazí stránka Přidat účet , můžete zařízení nastavit jako sdílené.
Pomocí pravého řádku nabídek přejděte do podokna Nastavení. V části Pracovní a školní účty vyberte registraci zařízení.
Po kliknutí na toto tlačítko se zobrazí výzva k autorizaci přístupu k kontaktům zařízení. Důvodem je integrace účtu Androidu na zařízení. Zvolte povolit.
Cloudová zařízení Správa istrator by měla zadat svůj organizační e-mail v části Nebo zaregistrovat jako sdílené zařízení. Potom klikněte na tlačítko registrovat jako sdílené zařízení a zadejte svoje přihlašovací údaje.
Zařízení je teď ve sdíleném režimu.
Všechny přihlášení a odhlášení na zařízení budou globální, což znamená, že se vztahují na všechny aplikace integrované se službou MSAL a Microsoft Authenticator na zařízení. Aplikace teď můžete nasadit do zařízení, které používají funkce režimu sdíleného zařízení.
Zobrazení sdíleného zařízení
Jakmile zařízení umístíte do sdíleného režimu, bude známé vaší organizaci a bude sledováno v tenantovi vaší organizace. Sdílená zařízení můžete zobrazit tak, že se podíváte na typ připojení.
Spuštění ukázkové aplikace
Ukázková aplikace je jednoduchá aplikace, která bude volat rozhraní Graph API vaší organizace. Při prvním spuštění se zobrazí výzva k vyjádření souhlasu, protože aplikace je pro váš účet zaměstnance nová.
Další kroky
Přečtěte si další informace o práci s knihovnou Microsoft Authentication Library a režimem sdíleného zařízení na zařízeních s Androidem: