Udostępnij za pośrednictwem


Samouczek: przygotowywanie aplikacji mobilnej systemu Android do uwierzytelniania natywnego

W tym samouczku pokazano, jak dodać natywny zestaw SDK uwierzytelniania biblioteki Microsoft Authentication Library (MSAL) do aplikacji mobilnej systemu Android.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Dodaj zależności biblioteki MSAL.
  • Utwórz plik konfiguracji.
  • Utwórz wystąpienie zestawu MSAL SDK.

Wymagania wstępne

Dodawanie zależności biblioteki MSAL

  1. Otwórz projekt w programie Android Studio lub utwórz nowy projekt.

  2. Otwórz aplikację build.gradle i dodaj następujące zależności:

    allprojects {
        repositories {
            //Needed for com.microsoft.device.display:display-mask library
            maven {
                url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
                name 'Duo-SDK-Feed'
            }
            mavenCentral()
            google()
        }
    }
    //...
    
    dependencies { 
        implementation 'com.microsoft.identity.client:msal:5.+'
        //...
    }
    
  3. W programie Android Studio wybierz pozycję Projekt synchronizacji plików>z plikami Gradle.

Tworzenie pliku konfiguracji

Wymagane identyfikatory dzierżawy, takie jak identyfikator aplikacji (klienta), są przekazywane do zestawu SDK biblioteki MSAL za pomocą ustawienia konfiguracji JSON.

Wykonaj następujące kroki, aby utworzyć plik konfiguracji:

  1. W okienku projektu programu Android Studio przejdź do pozycji app\src\main\res.

  2. Kliknij prawym przyciskiem myszy pozycję res i wybierz pozycję Nowy>katalog. Wprowadź raw jako nazwę nowego katalogu i wybierz przycisk OK.

  3. W pliku app\src\main\res\raw utwórz nowy plik JSON o nazwie auth_config_native_auth.json.

  4. auth_config_native_auth.json W pliku dodaj następujące konfiguracje biblioteki MSAL:

    { 
      "client_id": "Enter_the_Application_Id_Here", 
      "authorities": [ 
        { 
          "type": "CIAM", 
          "authority_url": "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/Enter_the_Tenant_Subdomain_Here.onmicrosoft.com/" 
        } 
      ], 
      "challenge_types": ["oob"], 
      "logging": { 
        "pii_enabled": false, 
        "log_level": "INFO", 
        "logcat_enabled": true 
      } 
    } 
     //...
    
  5. Zastąp następujące symbole zastępcze wartościami dzierżawy uzyskanymi z centrum administracyjnego firmy Microsoft Entra:

    • Zastąp Enter_the_Application_Id_Here symbol zastępczy identyfikatorem aplikacji (klienta) zarejestrowanej wcześniej aplikacji.
    • Zastąp element Enter_the_Tenant_Subdomain_Here poddomeną katalogu (dzierżawy). Jeśli na przykład domena podstawowa dzierżawy to contoso.onmicrosoft.com, użyj polecenia contoso. Jeśli nie masz swojej nazwy dzierżawy, dowiedz się, jak odczytywać szczegóły dzierżawy.

    Typy wyzwań to lista wartości, których aplikacja używa do powiadamiania firmy Microsoft Entra o obsługiwanej przez nią metodzie uwierzytelniania.

    • W przypadku przepływów rejestracji i logowania przy użyciu jednorazowego kodu dostępu poczty e-mail użyj polecenia ["oob"].
    • W przypadku przepływów rejestracji i logowania przy użyciu poczty e-mail i hasła użyj polecenia ["oob","password"].
    • W przypadku samoobsługowego resetowania hasła (SSPR) użyj polecenia ["oob"].

    Dowiedz się więcej o typach wyzwań.

Opcjonalnie: Konfiguracja rejestrowania

Włącz rejestrowanie podczas tworzenia aplikacji, tworząc wywołanie zwrotne rejestrowania, aby zestaw SDK mógł wyświetlać dzienniki wyjściowe.

import com.microsoft.identity.client.Logger

fun initialize(context: Context) {
        Logger.getInstance().setExternalLogger { tag, logLevel, message, containsPII ->
            Logs.append("$tag $logLevel $message")
        }
    }

Aby skonfigurować rejestrator, należy dodać sekcję w pliku konfiguracji: auth_config_native_auth.json

    //...
   { 
     "logging": { 
       "pii_enabled": false, 
       "log_level": "INFO", 
       "logcat_enabled": true 
     } 
   } 
    //...
  1. logcat_enabled: włącza funkcję rejestrowania biblioteki.
  2. pii_enabled: określa, czy komunikaty zawierające dane osobowe, czy dane organizacyjne są rejestrowane. W przypadku ustawienia wartości false dzienniki nie będą zawierać danych osobowych. Po ustawieniu wartości true dzienniki mogą zawierać dane osobowe.
  3. log_level: użyj go, aby zdecydować, który poziom rejestrowania ma być włączony. System Android obsługuje następujące poziomy dziennika:
    1. BŁĄD
    2. OSTRZEŻENIE
    3. INFO
    4. PEŁNY

Aby uzyskać więcej informacji na temat rejestrowania biblioteki MSAL, zobacz Rejestrowanie w bibliotece MSAL dla systemu Android.

Tworzenie wystąpienia zestawu SDK biblioteki MSAL uwierzytelniania natywnego

W metodzie onCreate() utwórz wystąpienie biblioteki MSAL, aby aplikacja mogła przeprowadzić uwierzytelnianie z dzierżawą za pomocą uwierzytelniania natywnego. Metoda createNativeAuthPublicClientApplication() zwraca wystąpienie o nazwie authClient. Przekaż utworzony wcześniej plik konfiguracji JSON jako parametr.

    //...
    authClient = PublicClientApplication.createNativeAuthPublicClientApplication( 
        this, 
        R.raw.auth_config_native_auth 
    )
    //...

Kod powinien wyglądać podobnie do poniższego fragmentu kodu:

    class MainActivity : AppCompatActivity() { 
        private lateinit var authClient: INativeAuthPublicClientApplication 
 
        override fun onCreate(savedInstanceState: Bundle?) { 
            super.onCreate(savedInstanceState) 
            setContentView(R.layout.activity_main) 
 
            authClient = PublicClientApplication.createNativeAuthPublicClientApplication( 
                this, 
                R.raw.auth_config_native_auth 
            ) 
            getAccountState() 
        } 
 
        private fun getAccountState() {
            CoroutineScope(Dispatchers.Main).launch {
                val accountResult = authClient.getCurrentAccount()
                when (accountResult) {
                    is GetAccountResult.AccountFound -> {
                        displaySignedInState(accountResult.resultValue)
                    }
                    is GetAccountResult.NoAccountFound -> {
                        displaySignedOutState()
                    }
                }
            }
        } 
 
        private fun displaySignedInState(accountState: AccountState) { 
            val accountName = accountResult.getAccount().username 
            val textView: TextView = findViewById(R.id.accountText) 
            textView.text = "Cached account found: $accountName" 
        } 
 
        private fun displaySignedOutState() { 
            val textView: TextView = findViewById(R.id.accountText) 
            textView.text = "No cached account found" 
        } 
    } 
  • Pobierz buforowane konto przy użyciu getCurrentAccount()obiektu , który zwraca obiekt accountResult.
  • Jeśli konto zostanie znalezione w stanie trwałości, użyj polecenia GetAccountResult.AccountFound , aby wyświetlić stan logowania.
  • W przeciwnym razie użyj polecenia GetAccountResult.NoAccountFound , aby wyświetlić stan wylogowania.

Upewnij się, że dołączysz instrukcje importowania. Program Android Studio powinien automatycznie dołączać instrukcje importowania.

Następny krok