WebAuthn ve geçiş anahtarlarında, bağlı taraf kimliği (RP kimliği), alan adına göre kimliğin kapsamını belirtir. Geçiş anahtarı oluşturduğunuzda tarayıcı, bunu belirli bir RP kimliğine bağlar. Tarayıcı daha sonra bu geçiş anahtarının, kimlikle eşleşmeyen veya kimliğin kapsamına girmeyen bir alanda kullanılmasını engeller. RP ID'nizi doğru şekilde tanımlamak, alt alan adları, siteler arası kaynaklar ve birinci taraf mobil uygulamalarında sorunsuz bir geçiş anahtarı deneyimi sağlar.
RP kimliğiyle ilgili temel bilgiler
Güvenen taraf kimliği (RP kimliği), hizmetinizi veya web sitenizi tanımlayan benzersiz bir dizedir. RP kimliği bir alan dizesi olmalıdır. eTLD+1 veya daha yüksek olması koşuluyla, tam olarak geçerli ana makine adı ya da daha geniş bir üst alan olabilir. IP adreslerini ve genel son ekleri (eTLD'ler) RP kimliği olarak kullanamazsınız.
Örneğin, sunucunuzu https://www.example.com adresinde barındırıyorsanız belirli ihtiyaçlara bağlı olarak RP kimliği olarak example.com veya www.example.com kullanabilirsiniz.
Aşağıdaki tabloda, kaynak ana makinenize bağlı olarak izin verilen RP kimliği örnekleri gösterilmektedir:
| Kaynak ana makinesi | İzin verilen RP kimliği (eTLD+1) |
|---|---|
https://login.example.com |
example.com veya login.example.com |
https://example.com:8080 |
example.com (bağlantı noktası numaraları hariçtir) |
https://mobile.example.co.jp |
example.co.jp veya mobile.example.co.jp |
https://sub.project.org.uk |
project.org.uk veya sub.project.org.uk |
https://user.github.io |
user.github.io (github.io bir eTLD'dir) |
https://myapp.pages.dev |
myapp.pages.dev (pages.dev bir eTLD'dir) |
http://localhost |
localhost (HTTPS şartının istisnası) |
Tarayıcı, geçiş anahtarlarını oluşturduğunuzda RP kimliğine kriptografik olarak bağlar. Kimlik bilgisini kullanmak için kimlik doğrulama isteğinin kaynağı, RP ID ile eşleşmelidir.
RP kimliği olarak bir eTLD+1 kullandığınızda geçiş anahtarı, ilgili alt alan adlarında çalışır. Örneğin, example.com RP kimliği https://login.example.com ve https://shop.example.com için çalışır. login.example.com gibi daha spesifik bir RP
ID, tam kaynağında çalışır ancak https://shop.example.com üzerinde çalışmaz.
Siteler arası bağlamlarda RP kimliği
Hizmetiniz birden fazla eTLD+1'i kapsıyorsa (örneğin, example.com ve example.co.jp) bu, siteler arası bir yapılandırmadır. Standart RP kimlikleri, siteler arası kurulumları desteklemez.
Geçiş anahtarlarını farklı siteler arasında paylaşmak için İlgili Kaynak İstekleri (ROR)'ni kullanın. ROR, istemci (tarayıcı) farklı kaynakları aynı mantıksal hizmetin parçası olarak tanıdığı için geçiş anahtarlarını farklı siteler arasında paylaşmanıza olanak tanır.
ROR için şartlar:
- Bir RP kimliği seçin: Bir RP kimliği seçip tüm sitelerde kullanmanız gerekir.
- Yapılandırma dosyası barındırma: Birincil RP kimliği alanı,
/.well-known/webauthnkonumunda yetkili kaynakları listeleyen bir yapılandırma dosyası barındırmalıdır. - Tutarlılığı koruma: Kullanıcı
https://www.example.co.jpüzerinde olsa bile WebAuthn çağrısındakirpId, hem oluşturma hem de kimlik doğrulama sırasında birincil olan olmalıdır (ör.example.com).
Kısıtlanmış taraf kimliği example.com için örnek ROR: https://example.com/.well-known/webauthn
{
"origins": [
"https://www.example.co.jp",
"https://shop.example"
]
}
İlgili Kaynak İstekleri'nin uygulanmasıyla ilgili daha fazla bilgi için İlgili Kaynak İstekleri ile sitelerinizde geçiş anahtarı yeniden kullanımına izin verme başlıklı makaleyi inceleyin.
Mobil uygulamalarda RP kimliği
Mobil uygulamalar, bir web alanıyla ilişkilendirilerek geçiş anahtarlarını kullanabilir. Bu ilişkiyi kurmak için sunucunuzda bir doğrulama dosyası barındırmanız gerekir.
Android: Digital Asset Links
Android Credential Manager, uygulama ile ilişkilendirmek için RP kimliği alanında Digital Asset Link (DAL) dosyası gerektirir.
- Barındırma: Dosyayı
https://<RP ID>/.well-known/assetlinks.jsonadresinde barındırın. - Doğrulama:
clientDataJSONiçindeoriginöğesini doğrulayın. Android'de bu,android:apk-key-hash:<hash>gibi bir dizedir.
Kısıtlanmış taraf kimliği example.com için örnek DAL (https://example.com/.well-known/assetlinks.json adresinde barındırılır)
[
{
"relation": [
"delegate_permission/common.handle_all_urls",
"delegate_permission/common.get_login_creds"
],
"target": {
"namespace": "android_app",
"package_name": "com.google.credentialmanager.sample",
"sha256_cert_fingerprints": [
"4F:20:47:1F:D9:9A:BA:96:47:8D:59:27:C2:C8:A6:EA:8E:D2:8D:14:C0:B6:A2:39:99:9F:A3:4D:47:3D:FA:11"
]
}
}
]
Daha fazla bilgi için Uygulamanız ve web siteniz arasında Digital Asset Links'i yapılandırma başlıklı makaleyi inceleyin.
iOS: İlişkilendirilmiş Alan Adları
Apple platformları, uygulamayla ilişkilendirmek için RP kimliği alanında bir apple-app-site-association (AASA) dosyası gerektirir.
- AASA Dosyası: Ana makine
https://<RP_ID>/.well-known/apple-app-site-association. - Haklar: Uygulama haklarına
webcredentials:<app info>ekleyin.
example.com RP kimliği için örnek AASA:
https://example.com/.well-known/apple-app-site-association:
{
"webcredentials":
{
"apps": ["EXAMPLE123.com.example.passkey"]
}
}
Daha fazla bilgi için Apple Developer Documentation'daki Connecting to a service with passkeys (Geçiş anahtarlarıyla hizmete bağlanma) başlıklı makaleyi inceleyin.
Özet
RP kimliği, kullanıcılarınızın geçiş anahtarlarına nereden erişeceğini belirler. Uygulama yaparken aşağıdaki noktaları aklınızda bulundurun:
- Hiyerarşi ve alt alan adları: RP kimliği bir alan dizesi (eTLD+1 veya daha yüksek) olmalıdır.
example.comgibi daha geniş bir alan kullanmak, geçiş anahtarlarının tüm alt alanlarda (örneğin,login.example.comveshop.example.com) çalışmasını sağlar. - Siteler arası çözümler: Birden fazla eTLD+1'i kapsayan hizmetler için İlişkili Kaynak İstekleri'ni (ROR) kullanın. Bunun için bir RP kimliği ve
/.well-known/webauthnkonumunda bir yapılandırma dosyası gerekir. - Mobil entegrasyonu: Android için
/.well-known/assetlinks.jsonkonumunda bir Digital Asset Links (DAL) dosyası, iOS için ise/.well-known/apple-app-site-associationkonumunda bir apple-app-site-association (AASA) dosyası kullanarak web siteniz ile mobil uygulamalarınız arasında doğrulanmış bir ilişki oluşturun.