Aracılığıyla paylaş


Bir Android uygulaması Google Play Store'da yayımlandıktan sonra kimlik doğrulaması başarısız oluyor

Bu makale, kullanıcılar Google Play Store'da yayımlanan bir Android uygulamasını yükledikten sonra oturum açma sırasında oluşan kimlik doğrulama hatasına yönelik bir çözüm sağlar.

Belirtiler

Aşağıdaki senaryoyu inceleyin:

  • Microsoft Kimlik Doğrulama Kitaplığı (MSAL) ile Android uygulamanızda Microsoft Entra kimlik doğrulamasını başarıyla uyguladınız.
  • Uygulama derlenip yürütüldü ve tüm Soru-Cevap testlerini geçti.
  • Uygulamayı Google Play Store'da yayımlarsınız.

Bu durumda, kullanıcılar uygulamayı yükledikten sonra uygulamada oturum açarken kimlik doğrulaması çalışmaz.

Kimlik doğrulama hata iletilerini kullanıcılara gösterirseniz veya ekibinize hata iletileri göndermelerine izin verirseniz, aşağıdaki metin gibi bir hata iletisiyle karşılaşabilirsiniz:

Yapılandırma dosyasındaki yeniden yönlendirme URI'si, paket adı ve imza karması ile oluşturulanla eşleşmiyor. Lütfen yapılandırma dosyasındaki uri'yi ve Azure portalında uygulama kaydınızı doğrulayın.

Bu sorun için başka bir olası senaryo:

Geliştirme ve Soru-Cevap testi sırasında, uygulamanızı kimlik doğrulaması ve çoklu oturum açma (SSO) işlemlerini işlemek için desteklenen bir aracı kullanacak şekilde ayarlarsınız. Ancak, uygulama Google Play aracılığıyla dağıtıldıktan ve yüklendikten sonra, uygulama artık kimlik doğrulaması için aracıyı kullanmaz.

Neden

Bir Android uygulaması bir cihaza yüklenmek üzere derlendiğinde, APK sıkıştırılmış paketi olarak oluşturulur ve ardından bir sertifika tarafından imzalanır. Bu sertifika imzalama, uygulamayı oluşturan kişinin özel imzalama anahtarının sahibi olmasını sağlar. Bu, bilgisayar korsanlarının sürümlerini özgün özel anahtarla imzalayamadıklarından uygulamada zararlı değişiklikler yapmasını önler.

Daha önce Android geliştiricileri özel imzalama anahtarlarının sahibi ve bakımını yaptı. Şu anda Google Play Services, Android geliştiricileri için özel imzalama anahtarı oluşturup korur ve Google tarafından güvenli depolama sağlar. Geliştirici, Google Play Hizmetleri'nin karşıya yüklenen bir uygulama paketinin orijinalliğini doğrulayabilmesi için hala bir karşıya yükleme anahtarı tutar, ancak kullanıcılar uygulamayı cihazlarına yüklediğinde gerçek imzalama Google'a ait imzalama sertifikası tarafından gerçekleştirilir.

Android Yerel ve Microsoft Desteği Kimlik Doğrulama Aracıları için MSAL, kimlik doğrulaması sırasında Android işletim sistemiyle etkileşim kurarken bunu tanımlamak için yüklü bir uygulamanın ortak imza karması kullanır.

Google Play aracılığıyla yüklenen bir uygulamanın genel imza karması, Google Play'e yayımlamadan önce yüklenenden farklıdır. Bu nedenle, MSAL yanlış imza karması ile yapılandırılır.

Çözüm

Bu sorunu çözmek için aşağıdakileri yapın:

MSAL Paket Denetçisi aracıyla veya Google Play Konsolu'ndan yeni bir imza karması alma

MSAL Paket Denetçisi aracını kullanarak veya Google Play Konsolu'ndan yeni bir imza karması alabilirsiniz.

MSAL Paket Denetçisi'ni yüklemek ve kullanmak için bkz . MSAL Android Yerel Kılavuzu için Paket Denetçisi.

Google Play Konsolu'ndan imza karması almak için şu adımları izleyin:

  1. Google Play Konsolu'na gidin ve Google Geliştirici hesabınızla oturum açın.

  2. Google Play Konsolu'na geldiğinizde etkilenen uygulamayı seçin.

  3. Sol gezinti bölmesindeki Yayın kategorisinin altında Kurulum'u genişletin ve Uygulama Bütünlüğü'nü seçin.

  4. Uygulama imzalama sekmesini seçin. Uygulama imzalama anahtarının parmak izini üç farklı varyasyonda görürsünüz.

  5. SHA-1 sertifika parmak izini kopyalayın ve değişkenin değeri olarak 6. adımda PowerShell betiğine yapıştırın $Thumbprint .

  6. MSAL'nin ihtiyaç duyduğu base64 kodlanmış parmak izini almak için aşağıdaki betiği çalıştırın:

    $Thumbprint = "paste your fingerprint here"
    $Thumbprint = $Thumbprint.Replace(":", "")
    
    $Bytes = [byte[]]::new($Thumbprint.Length / 2)
    
    For($i=0; $i -lt $Thumbprint.Length; $i+=2){
        $Bytes[$i/2] = [convert]::ToByte($Thumbprint.Substring($i, 2), 16)
    }
    
    $hashedString =[Convert]::ToBase64String($Bytes)
    
    Write-Host $hashedString
    

Google Play Konsolu'ndan imza karması almayı gösteren ekran görüntüsü.

Azure portalında yeni imza karması ile uygulama kaydına yeni bir yeniden yönlendirme URI'si ekleme

Not

Mevcut URI'yi değiştirmek yerine yeni bir yeniden yönlendirme URI'sini eklemenizi öneririz. Uygulama kaydınız birçok yeniden yönlendirme URI'sini içerebilir. Ayrıca, mevcut yeniden yönlendirme URI'sini değiştirmek uygulamanızın geliştirme sürümünde sorunlara neden olabilir. Bu sorun giderme, geliştirme güncelleştirmeleri vb. sırasında sorunlara neden olabilir.

  1. Azure portalında oturum açın ve Uygulama kayıtları sayfasına gidin.

  2. Android uygulamanız için uygulama kaydını seçin.

  3. Yönet'in altında Kimlik Doğrulama'yı seçin.

  4. Platform yapılandırmaları'nın altında Platform ekle'yi seçin.

  5. Platformları yapılandır'ın altında Android'i seçin.

    Android platformunun nasıl yapılandırıldığını gösteren ekran görüntüsü.

  6. Android uygulamanızın paket adını girin. Ayrıca imza karması oluşturup girin.

    Android uygulamasının nasıl yapılandırıldığını gösteren ekran görüntüsü.

    Not

    İmza karması farklı olduğu sürece birden çok Android yeniden yönlendirme URI'sinde aynı paket adını kullanmak normaldir.

  7. Platform yapılandırmasını tamamlamak için Yapılandır'ı seçin.

Yeni yeniden yönlendirme URI'sini ve imza karması kullanmak için uygulama kodundaki MSAL yapılandırmasını güncelleştirin

Uygulama kodunda MSAL yapılandırma dosyasını ve Android Bildirim dosyasını güncelleştirin.

  • MSAL yapılandırma dosyası:

    Yalnızca yeniden yönlendirme URI'sini değiştirin. Doğrudan Azure portalından kopyalayıp yapıştırın. Azure portalında, yeniden yönlendirme URI'sinin imza karması kısmı HTTP ile kodlanmıştır. HTTP ile kodlanmış olarak kalmalıdır.

    {
        "client_id": "<Client ID>",
        "authorization_user_agent": "DEFAULT",
        "redirect_uri": "<Redirect URI>"
        "broker_redirect_uri_registered": true,
        "authorities": [
            {
                "types": "AAD",
                "audience": {
                    "type": "AzureADMyOrg",
                    "tenant_id": "<Tenant ID>"
                }
            }
        ],
        "logging":{
            "log_level": "VERBOSE",
            "logcat_enabled": true
        }
    }
    
  • Android Bildirim dosyası:

    Yalnızca etkinlikteki android:pathcom.microsoft.identity.client.BrowserTabActivity özelliği değiştirin. bu özelliğin değeri olarak imza karması yapıştırın.

    <activity
        android:name="com.microsoft.identity.client.BrowserTabActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:schema="msauth"
                android:host="com.example.azureauthsso1"
                android:path="android_path" />
        </intent-filter>
    </activity>
    

    Not

    • İmza karmasının önüne eğik çizgi eklediğinizden emin olun.
    • Yeniden yönlendirme URI'sinin aksine buradaki imza karması HTTP ile kodlanmış değildir.

Üçüncü taraf bilgileri hakkında yasal uyarı

Bu makalede adı geçen üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği ile ilgili örtük veya başka türlü hiçbir garanti vermez.

Yardım için bize ulaşın

Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.