Självstudie: Använda läget för delad enhet i ditt Android-program

I den här självstudien lär sig Android-utvecklare och Azure Active Directory-klientadministratörer (Azure AD) om koden, Authenticator-appen och klientinställningar som krävs för att aktivera läget för delad enhet för en Android-app.

I de här självstudierna har du

  • Ladda ned ett kodexempel
  • Aktivera och identifiera läget för delad enhet
  • Identifiera ett eller flera kontoläge
  • Identifiera en användarväxel och aktivera global inloggning och ut logga ut
  • Konfigurera klientorganisationen och registrera programmet i Azure Portal
  • Konfigurera en Android-enhet i läget för delad enhet
  • Kör exempelappen

Förutsättningar

Utvecklarguide

Det här avsnittet av självstudien innehåller utvecklarvägledning för implementering av läget för delade enheter i ett Android-program med hjälp av Microsoft Authentication Library (MSAL). I självstudien om MSAL Android kan du se hur du integrerar MSAL med din Android-app, loggar in en användare, anropar Microsoft Graph och loggar ut en användare.

Ladda ned exemplet

Klona exempelprogrammet från GitHub. Exemplet kan fungera i ett eller flera kontoläge.

Lägga till MSAL SDK till din lokala Maven-lagringsplats

Om du inte använder exempelappen lägger du till MSAL-biblioteket som ett beroende i filen build.gradle så här:

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

Konfigurera din app för att använda läget för delad enhet

Se konfigurationsdokumentationen för mer information om hur du ställer in konfigurationsfilen.

Ange "shared_device_mode_supported" till true i MSAL-konfigurationsfilen.

Du kanske inte planerar att stödja läget för flera konton. Det kan vara om du inte använder en delad enhet och användaren kan logga in i appen med mer än ett konto på samma gång. I så fall anger "account_mode" du till "SINGLE" . Detta garanterar att din app alltid får ISingleAccountPublicClientApplication , och förenklar avsevärt din MSAL-integrering. Standardvärdet för är , så det är viktigt att ändra det här värdet i "account_mode" "MULTIPLE" konfigurationsfilen om du använder "single account" -läget.

Här är ett exempel på filen auth_config.json som ingår i > > appens huvudkatalog för res > raw för exempelappen:

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

Identifiera läget för delad enhet

Med läget delad enhet kan du konfigurera Android-enheter så att de delas av flera anställda, samtidigt som Microsoft Identity-hantering av enheten stöds. Anställda kan logga in på sina enheter och snabbt komma åt kundinformation. När de är klara med skiftet eller uppgiften kan de logga ut från alla appar på den delade enheten med ett enda klick och enheten blir omedelbart redo för nästa medarbetare att använda.

Använd isSharedDevice() för att avgöra om en app körs på en enhet som är i läget för delad enhet. Din app kan använda den här flaggan för att avgöra om den ska ändra UX på motsvarande sätt.

Här är ett kodfragment som visar hur du kan använda isSharedDevice() . Den kommer från SingleAccountModeFragment klassen i exempelappen:

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

Initiera PublicClientApplication-objektet

Om du anger "account_mode":"SINGLE" i MSAL-konfigurationsfilen kan du på ett säkert sätt ställa in det returnerade programobjektet som en ISingleAccountPublicCLientApplication .

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

Identifiera en eller flera kontoläge

Om du skriver en app som endast ska användas för första radens arbetare på en delad enhet rekommenderar vi att du skriver din app för att endast stödja enkontoläge. Detta omfattar de flesta program som är uppgiftsfokuserade, till exempel appar för medicinska journaler, fakturaappar och de flesta verksamhetsapplikationer. Detta förenklar utvecklingen eftersom många funktioner i SDK:n inte behöver anpassas.

Om din app stöder flera konton samt läget för delad enhet måste du utföra en typkontroll och typkon casta till lämpligt gränssnitt enligt nedan.

private IPublicClientApplication mApplication;

        if (mApplication instanceOf IMultipleAccountPublicClientApplication) {
          IMultipleAccountPublicClientApplication multipleAccountApplication = (IMultipleAccountPublicClientApplication) mApplication;
          ...
        } else if (mApplication instanceOf    ISingleAccountPublicClientApplication) {
           ISingleAccountPublicClientApplication singleAccountApplication = (ISingleAccountPublicClientApplication) mApplication;
            ...
        }

Hämta den inloggade användaren och avgör om en användare har ändrats på enheten

Metoden loadAccount hämtar kontot för den inloggade användaren. Metoden onAccountChanged avgör om den inloggade användaren har ändrats och rensar i så fall:

private void loadAccount()
{
  mSingleAccountApp.getCurrentAccountAsync(new ISingleAccountPublicClientApplication.CurrentAccountCallback()
  {
    @Overide
    public void onAccountLoaded(@Nullable IAccount activeAccount)
    {
      if (activeAccount != null)
      {
        signedInUser = activeAccount;
        mSingleAccountApp.acquireTokenSilentAsync(SCOPES,"http://login.microsoftonline.com/common",getAuthSilentCallback());
      }
    }
    @Override
    public void on AccountChanged(@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)
    {
    }
  }
}

Logga in en användare globalt

Följande loggar in en användare på enheten till andra appar som använder MSAL med Authenticator appen:

private void onSignInClicked()
{
  mSingleAccountApp.signIn(getActivity(), SCOPES, null, getAuthInteractiveCallback());
}

Logga ut en användare globalt

Följande tar bort det inloggade kontot och rensar cachelagrade token från inte bara appen utan även från enheten som är i läget för delad enhet:

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

Administratörsguide

Följande steg beskriver hur du ställer in programmet i Azure Portal och sätter enheten i läget för delad enhet.

Registrera ditt program i Azure Active Directory

Registrera först programmet i din organisations klientorganisation. Ange sedan dessa värden nedan i auth_config.json för att programmet ska köras korrekt.

Information om hur du gör detta finns i Registrera ditt program.

Anteckning

När du registrerar din app använder du snabbstartsguiden till vänster och väljer sedan Android. Detta leder dig till en sida där du uppmanas att ange paketnamnet och signaturhashvärdet för din app. Dessa är mycket viktiga för att säkerställa att din appkonfiguration fungerar. Sedan får du ett konfigurationsobjekt som du kan använda för din app som du klipper ut och klistrar in i auth_config.json-filen.

Konfigurera android-appsidan i Azure Portal snabbstart

Du bör välja Gör den här ändringen åt mig och sedan ange de värden som snabbstarten frågar efter i Azure Portal. När det är klart genererar vi alla konfigurationsfiler som du behöver.

Konfigurera projektsidan i Azure Portal snabbstart

Konfigurera en klient

I testsyfte ställer du in följande i din klientorganisation: minst två anställda, en molnenhetsadministratör och en global administratör. I Azure Portal du molnenhetsadministratören genom att ändra organisationsroller. I Azure Portal du dina organisationsroller genom att välja Azure Active Directory > roller och administratörer > molnenhetsadministratör. Lägg till de användare som kan placera en enhet i delat läge.

Konfigurera en Android-enhet i delat läge

Ladda ned Authenticator appen

Ladda ned Microsoft Authenticator app från Google Play Store. Om du redan har laddat ned appen ser du till att den är den senaste versionen.

Authenticator appinställningar & registrera enheten i molnet

Starta appen Authenticator och gå till huvudkontosidan. När du ser sidan Lägg till konto är du redo att dela enheten.

Authenticator skärmen Lägg till konto

Gå till Inställningar med hjälp av den högra menyraden. Välj Enhetsregistrering under Arbets- & skolkonton.

skärmen Authenticator för inställningar

När du klickar på den här knappen uppmanas du att ge åtkomst till enhetskontakter. Detta beror på Androids kontointegrering på enheten. Välj Tillåt.

Authenticator skärmen för att bekräfta åtkomst

Molnenhetsadministratören ska ange sin organisations-e-postadress under Eller registrera sig som en delad enhet. Klicka sedan på knappen Registrera som delad enhet och ange deras autentiseringsuppgifter.

Skärmen Enhetsregistrering i appen

Skärmbild av appen som visar Microsofts inloggningssida

Enheten är nu i delat läge.

Appskärm som visar läget för delad enhet aktiverat

Alla inloggningar och utningar på enheten blir globala, vilket innebär att de gäller för alla appar som är integrerade med MSAL och Microsoft Authenticator på enheten. Nu kan du distribuera program till den enhet som använder funktioner i läget Delad enhet.

Visa den delade enheten i Azure Portal

När du har satt en enhet i delat läge blir den känd för din organisation och spåras i din organisations klientorganisation. Du kan visa dina delade enheter genom att titta Kopplingstyp Azure Active Directory bladet i Azure Portal.

Fönstret Alla enheter som visas i Azure Portal

Köra exempelappen

Exempelprogrammet är en enkel app som anropar Graph API för din organisation. Vid den första körningen uppmanas du att godkänna eftersom programmet är nytt för ditt medarbetarkonto.

Skärmen Information om programkonfiguration

Nästa steg

Läs mer om hur du arbetar med Microsoft Authentication Library och delat enhetsläge på Android-enheter: