Web siteleri ve Android uygulamaları arasında otomatik kimlik bilgisi paylaşımını ayarlama

1. Genel Bakış

Kullanıcılarınız hizmetinize hem web sitelerinden hem de Android uygulamalarından erişiyor mu? Kullanıcıları her platformda ayrı ayrı oturum açmaya zorlamak gereksiz sorunlara yol açar ve kullanıcı kaybına neden olabilir.

Digital Asset Links (DAL), web siteleriniz ve uygulamalarınız arasındaki ilişkilendirmeleri bildirmenize olanak tanıyarak bu sorunu çözer. Bu sayede Google Şifre Yöneticisi gibi şifre yöneticileri, kayıtlı şifreleri ve geçiş anahtarlarını birbirleriyle paylaşabilir.

Özellikle, Digital Asset Links dosyanızı yapılandırmak için paylaşmak istediğiniz öğeye bağlı olarak farklı ilişkiler gerekir:

  • Şifreler için: delegate_permission/common.get_login_creds eklemek, şifre yöneticilerinin kayıtlı şifreleri web siteniz ve uygulamanız arasında paylaşmasına olanak tanır.
  • Geçiş anahtarları için: Geçiş anahtarları belirli bir web alanına sıkı bir şekilde bağlı olduğundan Android, alan sahipliğinin kanıtlanmasını gerektirir. Bu nedenle, delegate_permission/common.handle_all_urls eklemeniz gerekir. Bunu Android App Links (derin bağlantı) için kullanılan izin olarak tanıyor olabilirsiniz. Ancak bu izin, bir platformda oluşturulan geçiş anahtarlarının diğer platformda kullanılması için de kesinlikle gereklidir.

Sonuç mu? Kullanıcılar, yalnızca bir platform için kaydedilen şifreleri veya geçiş anahtarlarını kullanarak bağlı platformlarınızda sorunsuz bir şekilde oturum açabilir.

Mülkler arasında kullanılabilen şifreler

Otomatik kimlik bilgisi paylaşımını uygulamak, kullanıcı deneyimini önemli ölçüde iyileştirebilir. Örneğin, eBay, kimlik bilgisi paylaşımı için DAL'ı uyguladıktan sonra oturum açma başarısında% 10'luk bir artış gördü.

Bu codelab'de, web siteniz ile Android uygulamanız arasında kimlik bilgisi paylaşımını etkinleştirmek için Digital Asset Links'i nasıl kullanacağınızı öğreneceksiniz.

Ön koşullar

Neler öğreneceksiniz?

  • Google Play Console'u kullanarak kimlik bilgisi paylaşımını ayarlama (önerilir).
  • assetlinks.json dosyasını manuel olarak oluşturma
  • Android uygulamasını manuel ilişkilendirme için yapılandırma
  • Bir Android uygulamasını web sitesi alanıyla ilişkilendirerek geçiş anahtarlarını etkinleştirme
  • Kurulumunuzu oluşturmak ve doğrulamak için araçları kullanma

İhtiyacınız olanlar

  • Web sitesi: https://{your-domain}/.well-known/assetlinks.json konumunda bir JSON dosyası barındırabilme.
  • Android uygulaması:
    • Play Console yöntemi için: Google Play'de yayınlanmış bir uygulama.
    • Manuel yöntem için: Değiştirebileceğiniz ve oluşturabileceğiniz bir Android projesi. Google Şifre Yöneticisi ile kimlik bilgisi paylaşımının çalışması için uygulamanın Google Play'de yayınlanması gerektiğini unutmayın.

İşleyiş şekli

Kimlik bilgisi paylaşımının çalışması için iki yönlü güven oluşturmanız gerekir:

  1. Web -> Uygulama: Web siteniz, Android uygulamanıza güvendiğini belirten bir assetlinks.json dosyası barındırmalıdır.
  2. Uygulama -> Web: Android uygulamanız, web sitenize güvenecek şekilde yapılandırılmalıdır.

Bunu yapmanın iki yolunu ele alacağız: Google Play Console'u kullanarak otomatik yöntem (önerilen) ve doğrudan Digital Asset Links'i kullanarak manuel yöntem.

2. Google Play Console'u kullanarak ayarlama (Önerilir)

Web siteniz ve Android uygulamanız arasında kimlik bilgisi paylaşımını etkinleştirmenin en kolay yolu Google Play Console'dur. Bu yöntem, uygulamanızın manifestini değiştirmeniz veya uygulamanızın yeni bir sürümünü yayınlamanız gerekmeden uygulamanızı web sitenizle ilişkilendirmenize olanak tanır. Google Play, uygulama tarafındaki ilişkilendirmeyi sizin için yönetir.

Ön koşullar

Derin bağlantılar hakkında daha fazla bilgi için Android App Links başlıklı makaleyi inceleyin.

Adımlar

  1. Play Console'da Büyüme > Derin bağlantılar'a gidin.
  2. Alanınız listede yoksa Uygulama yapılandırması bölümünde Alan ekle'yi tıklayın.
  3. Alanınızı bulun ve Kimlik bilgisi paylaşımı sütununu bulun. 'ı tıklayın (veya yeni alanlar için Kimlik bilgisi paylaşımını etkinleştir'in etkinleştirildiğinden emin olun).
  4. Play Console tarafından oluşturulan JSON snippet'ini kopyalayın.
  5. Bu JSON içeriğini https://{your-domain}/.well-known/assetlinks.json adresinde yayınlayın. (Bu dosya sizde varsa yeni beyanı dosyaya ekleyin.)
  6. Play Console'a geri dönüp Web sitesi ilişkilendirmesi oluştur'u veya Kimlik bilgisi paylaşımını etkinleştir'i tıklayın.

Play Console artık barındırma kurulumunuzu doğrulayacak.

Play Console Derin Bağlantıları

Kimlik bilgisi paylaşımının çalışması için web sitenizin barındırıcısının aşağıdaki koşulları karşılaması gerekir:

  • URL'ye HTTPS üzerinden erişilebiliyor.
  • Sunucu, Content-Type: application/json ile yanıt veriyor.
  • URL'ye yönlendirme olmadan erişilebiliyor.

Doğrulama işlemi tamamlandıktan sonra kimlik bilgisi paylaşımı etkinleştirilir. Yapılandırma değişikliklerinin yayılması 1-2 hafta sürebilir.

3. Digital Asset Links kullanarak manuel olarak ayarlama

Daha fazla kontrol ister misiniz? Veya Play Console'a erişiminiz yok mu? Web siteniz ile Android uygulamanız arasında kimlik bilgisi paylaşımını manuel olarak yapılandırabilirsiniz. Bu işlem iki ana görevden oluşur: JSON dosyasını sitenizde barındırma ve Android uygulama manifestinizi güncelleme.

1. Uygulamanızın dijital parmak izini alma

Otomatik kimlik bilgisi paylaşımını ayarlamadan önce her platform için aşağıdakilere sahip olduğunuzdan emin olun:

Her Android uygulaması için:

2. İlişkilendirme dosyasını oluşturma

Web siteniz ile uygulamanız arasındaki ilişkileri bildiren bir assetlinks.json dosyası oluşturmanız gerekir. Şifre paylaşma izni vermek için delegate_permission/common.get_login_creds, derin bağlantıyı etkinleştirmek ve geçiş anahtarlarını paylaşmak için delegate_permission/common.handle_all_urls kullanın.

Aşağıdaki içeriğe sahip assetlinks.json adlı bir dosya oluşturun. Örnek değerleri kendi site URL'niz, paket adınız ve parmak izinizle değiştirin:

[{
  "relation": [
    "delegate_permission/common.handle_all_urls",
    "delegate_permission/common.get_login_creds"
    ],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.app",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

3. Dosyayı barındırma

assetlinks.json dosyanızı alanınızın kökündeki .well-known dizinine yükleyin.

Konum: https://{your-domain}/.well-known/assetlinks.json

Kimlik bilgisi paylaşımının çalışması için web sitenizin barındırıcısının aşağıdaki koşulları karşılaması gerekir:

  • URL'ye HTTPS üzerinden erişilebiliyor.
  • Sunucu, Content-Type: application/json ile yanıt veriyor.
  • URL'ye yönlendirme olmadan erişilebiliyor.

Web'den uygulamaya

4. Android uygulamanızı yapılandırma

Şimdi Android uygulamanıza web sitesine güvenmesini söyleyin. Manifest dosyasına, assetlinks.json URL'nizi içeren bir kaynak dosyasına yönlendiren bir referans eklersiniz.

1. Dize kaynağı ekleme

res/values/strings.xml bölümünde yeni bir dize ekleyin asset_statements. Kaçış karakteriyle belirtilen tırnak işaretlerine dikkat edin.

<resources>
    <string name="asset_statements" translatable="false">
      [{
        \"include\": \"https://www.example.com/.well-known/assetlinks.json\"
      }]
    </string>
</resources>

2. Manifest dosyasına meta veri ekleme

AndroidManifest.xml içinde, bu dize kaynağına referans veren <application> öğesine bir <meta-data> etiketi ekleyin:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.app">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

        <meta-data
            android:name="asset_statements"
            android:resource="@string/asset_statements" />

        <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    </manifest>

Bu adımları tamamlayıp Android uygulamanızın yeni bir sürümünü yayınladıktan sonra, Digital Asset Links'i destekleyen şifre yöneticileri (ör. Google Şifre Yöneticisi), kullanıcı com.example.app adresinde oturum açmaya çalıştığında www.example.com için kaydedilen kimlik bilgilerini önerebilir ve bunun tersi de geçerlidir.

4. Kurulumu doğrulama

Gönderim yapmadan önce Dijital Varlık Bağlantıları yapılandırmanızı doğrulamanız çok önemlidir. Hatalı JSON veya ulaşılamayan dosyalar sessizce başarısız olur.

Resmi Ekstre Oluşturucu ve Doğrulayıcı aracını kullanın.

Statement Generator and Validator

  1. Site alanınızı ve uygulama paketinizin adını girin.
  2. Test ekstresi'ni tıklayın.
  3. Bu araç, assetlinks.json dosyasının doğru şekilde barındırılıp barındırılmadığını ve geçerli ilişkilendirmeyi içerip içermediğini kontrol eder.

5. Kimlik bilgilerini birden fazla web sitesi arasında paylaşma

Web&#39;den uygulamaya

Aynı giriş sistemini paylaşan birden fazla web siteniz varsa (örneğin, example.com ve example.co.uk) kimlik bilgilerinin aralarında paylaşılabilmesi için bunları bağlı kuruluş olarak beyan edebilirsiniz.

Şifreleri birden fazla web sitesi arasında paylaşma

Web siteleri arasında şifre paylaşmak için delegate_permission/common.get_login_creds kullanarak web-web ilişkisi tanımlayabilirsiniz.

Örneğin, example.com'nın example.co.uk ile şifre paylaşabilmesi için https://example.com/.well-known/assetlinks.json üzerinde barındırılan assetlinks.json dosyası, example.co.uk'ı hedefleyen bir ifade içermelidir:

[{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "web",
    "site": "https://example.co.uk"
  }
}]

Benzer şekilde, https://example.co.uk/.well-known/assetlinks.json, example.com'ı hedefleyen bir ifade içermelidir.

Geçiş anahtarlarını birden fazla web sitesi arasında paylaşma

Birden fazla web sitesinin aynı geçiş anahtarlarını paylaşabilmesi için aynı güvenen taraf kimliğini (RP kimliği) kullanmaları gerekir. WebAuthn ve geçiş anahtarlarında RP kimliği, alan adına göre kimliğin kapsamını belirtir. Oluşturduğunuz geçiş anahtarları belirli bir RP kimliğine bağlanır ve yalnızca bu kimliğin kapsamındaki alanlarda kullanılabilir. RP kimliğinizi doğru şekilde tanımlamak, alt alanlar, siteler arası kaynaklar ve birinci taraf mobil uygulamalarında sorunsuz bir geçiş anahtarı deneyimi sağlar. RP kimliğini ayarlama hakkında daha fazla bilgiyi Güvenen taraf kimliğini (RP kimliği) anlama başlıklı makalede bulabilirsiniz. İlgili Kaynak İstekleri ile bir web sitesi, RP kimliğini kullanmasına izin verilen diğer kaynakları belirleyebilir. Böylece kullanıcılar, işlettiğiniz birden fazla sitede aynı geçiş anahtarını yeniden kullanabilir. Bunun, Digital Asset Links'te delegate_permission/common.handle_all_urls kullanılan bir web sitesi ile Android uygulaması arasında geçiş anahtarı paylaşımından farklı olduğunu unutmayın.

Örneğin, example.com ve example.co.uk'nin geçiş anahtarlarını paylaşmasını istiyorsanız example.com'nın standart RP kimliği olacağına karar verebilirsiniz. Bu işlemin çalışması için example.co.uk, WebAuthn API çağrılarında rpId: 'example.com' kullanmalı ve example.com, example.co.uk'yı izin verilenler listesine eklemek için https://example.com/.well-known/webauthn adresinde bir dosya barındırmalıdır:

{
  "origins": [
    "https://example.co.uk"
  ]
}

Bu izin, example.co.uk uygulamasının example.com ile ilişkili geçiş anahtarları oluşturup kullanmasına olanak tanır.

6. Sonuç

Tebrikler! Otomatik kimlik bilgisi paylaşımını başarıyla ayarladınız.

Kullanıcılarınız artık web sitenizde şifre ve geçiş anahtarı kaydedebilir ve bunları tek bir dokunuşla Android uygulamanızda oturum açmak için kullanabilir (veya tam tersi). Bu basit değişiklik, oturum açma dönüşüm oranlarınızı ve kullanıcı memnuniyetini önemli ölçüde artırabilir.

Sırada ne var?