Aracılığıyla paylaş


Öğretici: Android mobil uygulamanızı yerel kimlik doğrulaması için hazırlama

Şunun için geçerlidir: Aşağıdaki içeriğin dış kiracılar için geçerli olduğunu gösteren beyaz onay işareti simgesine sahip yeşil daire. Dış kiracılar (daha fazla bilgi edinin)

Bu öğreticide, Bir Android mobil uygulamasına Microsoft Authentication Library (MSAL) yerel kimlik doğrulama SDK'sı ekleme gösterilmektedir.

Bu öğreticide şunları yapacaksınız:

  • MSAL bağımlılıkları ekleyin.
  • Yapılandırma dosyası oluşturun.
  • MSAL SDK örneği oluşturma.

Önkoşullar

  • Henüz yapmadıysanız, yerel kimlik doğrulaması kullanarak örnek Android (Kotlin) mobil uygulamasında kullanıcıları oturum açma adımlarını içeren yönergelerini izleyin ve dış kiracınıza bir uygulama kaydedin. Aşağıdaki adımları tamamladığınızdan emin olun:
    • Bir uygulamayı kaydedin.
    • Genel istemci ve yerel kimlik doğrulama akışlarını etkinleştirin.
    • API izinleri verme.
    • Kullanıcı akışı oluşturma.
    • Uygulamayı kullanıcı akışıyla ilişkilendirin.
  • Android projesi. Android projeniz yoksa oluşturun.

MSAL bağımlılıklarını ekleyin

  1. Projenizi Android Studio'da açın veya yeni bir proje oluşturun.

  2. Uygulamanızın build.gradle açın ve aşağıdaki bağımlılıkları ekleyin:

    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:6.+'
        //...
    }
    
  3. Android Studio'da Dosya>Projeyi Gradle Dosyalarıyla Eşitleöğesini seçin.

Yapılandırma dosyası oluşturma

Uygulama (istemci) kimliği gibi gerekli kiracı tanımlayıcılarını bir JSON yapılandırma ayarı aracılığıyla MSAL SDK'ya geçirirsiniz.

Yapılandırma dosyası oluşturmak için şu adımları kullanın:

  1. Android Studio'nun proje bölmesinde app\src\main\resadresine gidin.

  2. üzerine sağ tıklayın ve Yeni>Dizinseçin. Yeni dizin adı olarak raw girin ve tamam seçin.

  3. app\src\main\res\rawiçinde auth_config_native_auth.jsonadlı yeni bir JSON dosyası oluşturun.

  4. auth_config_native_auth.json dosyasına aşağıdaki MSAL yapılandırmalarını ekleyin:

    { 
      "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. Aşağıdaki yer tutucuları Microsoft Entra yönetim merkezinden aldığınız kiracı değerlerinizle değiştirin:

    • Enter_the_Application_Id_Here yer tutucusunu daha önce kaydettiğiniz uygulamanın uygulama (istemci) kimliğiyle değiştirin.
    • Enter_the_Tenant_Subdomain_Here'yi dizin (kiracı) alt alan adıyla değiştirin. Örneğin, kiracı birincil domain adınız contoso.onmicrosoft.comise, contosodomainini kullanın. Kiracı adınız yoksa, kiracı ayrıntılarınızı nasıl okuyacağınızıöğrenin.

    Sınama türleri, uygulamanın desteklediği kimlik doğrulama yöntemini Microsoft Entra'ya bildirmek için kullandığı değerlerin listesidir.

    • Tek seferlik e-posta geçiş koduyla kaydolma ve oturum açma akışları için ["oob"]kullanın.
    • E-posta ve parola ile kaydolma ve oturum açma akışları için ["oob","password"]kullanın.
    • Self servis parola sıfırlama (SSPR) için ["oob"]kullanın.

    sınama türleri hakkında daha fazla bilgi edinin.

İsteğe bağlı: Log kaydı yapılandırması

Uygulama oluşturma sırasında günlüğe kaydetmeyi açmak için bir günlük geri çağırma fonksiyonu oluşturun, böylece SDK günlükleri çıkartabilir.

import com.microsoft.identity.client.Logger

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

Günlükçüyü yapılandırmak için yapılandırma dosyasına auth_config_native_auth.jsonbir bölüm eklemeniz gerekir:

    //...
   { 
     "logging": { 
       "pii_enabled": false, 
       "log_level": "INFO", 
       "logcat_enabled": true 
     } 
   } 
    //...
  1. logcat_enabled: Kitaplığın günlüğe kaydetme işlevini etkinleştirir.
  2. pii_enabled: Kişisel veri içeren iletilerin mi yoksa kuruluş verilerinin mi günlüğe kaydedildiğini belirtir. False olarak ayarlandığında günlükler kişisel veriler içermez. True olarak ayarlandığında günlükler kişisel veriler içerebilir.
  3. log_level: Hangi günlük düzeyinin etkinleştirileceğine karar vermek için bunu kullanın. Android aşağıdaki günlük düzeylerini destekler:
    1. HATA
    2. UYARI
    3. BİLGİ
    4. AYRINTILI

MSAL günlüğü hakkında daha fazla bilgi için bkz. Androidiçin MSAL'de günlüğe kaydetme.

Yerel kimlik doğrulaması MSAL SDK örneği oluşturma

onCreate() yönteminde, uygulamanın yerel kimlik doğrulaması aracılığıyla kiracınızla kimlik doğrulaması yapabilmesi için bir MSAL örneği oluşturun. createNativeAuthPublicClientApplication() yöntemi, authClientadlı bir örneği döndürür. Daha önce oluşturduğunuz JSON yapılandırma dosyasını parametre olarak geçirin.

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

Kodunuz aşağıdaki kod parçacığına benzer olmalıdır:

    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(accountResult: 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" 
        } 
    } 
  • getCurrentAccount()'ı kullanarak, accountResultnesnesini döndüren önbelleğe alınmış hesabı alın.
  • Kalıcılıkta bir hesap bulunursa, oturum açma durumunu görüntülemek için GetAccountResult.AccountFound kullanın.
  • Aksi takdirde, oturum kapatma durumunu görüntülemek için GetAccountResult.NoAccountFound kullanın.

İthalat ifadelerini eklediğinizden emin olun. Android Studio, içeri aktarma deyimlerini sizin için otomatik olarak eklemelidir.

Sonraki adım