Özet #
Web Yetkilendirmesi Web’e açık anahtar kimlik bilgisi tabanlı kimlik doğrulaması getirerek güvenliği artırmaya yardımcı olur ve yakında Chrome, Firefox ve Edge’de desteklenecektir (güncellenmiş özelliklerle). Yeni bir tür ekler Credential
kullanan web sitelerini bozabilecek nesne. Kimlik Bilgileri Yönetimi API’sı kullandıkları belirli kimlik bilgisi türlerinin özelliklerini algılamadan.
Şu anda bunu özellik tespiti için yapıyorsanız #
if (navigator.credentials && navigator.credentials.preventSilentAccess) {
// use CM API
}
bunun yerine bunları yap #
if (window.PasswordCredential || window.FederatedCredential) {
// Call navigator.credentials.get() to retrieve stored
// PasswordCredentials or FederatedCredentials.
}if (window.PasswordCredential) {
// Get/Store PasswordCredential
}
if (window.FederatedCredential) {
// Get/Store FederatedCredential
}
if (navigator.credentials && navigator.credentials.preventSilentAccess) {
// Call navigator.credentials.preventSilentAccess()
}
Görmek değişiklikler örnek olarak örnek koda yapılmıştır.
Daha fazlasını öğrenmek için okumaya devam edin.
Kimlik Bilgileri Yönetimi API’sı nedir? #
Kimlik Bilgileri Yönetimi API’sı (CM API), arama kaynağı için kullanıcı kimlik bilgilerini depolamak/almak için web sitelerine kullanıcı aracısının kimlik bilgileri deposuna programlı erişim sağlar.
Temel API’ler şunlardır:
navigator.credentials.get()
navigator.credentials.store()
navigator.credentials.create()
navigator.credentials.preventSilentAccess()
Orijinal CM API belirtimi, 2 kimlik bilgisi türünü tanımlar:
PasswordCredential
FederatedCredential
bu PasswordCredential
kullanıcının kimliğini ve şifresini içeren bir kimlik bilgisidir. bu FederatedCredential
kullanıcının kimliğini ve bir kimlik sağlayıcıyı temsil eden bir dizeyi içeren bir kimlik bilgisidir.
Bu 2 kimlik bilgisi ile web siteleri şunları yapabilir:
- Kullanıcının giriş yapar yapmaz önceden kaydedilmiş bir parola tabanlı veya birleştirilmiş kimlik bilgileriyle oturum açmasına izin verin (otomatik oturum açma),
- Kullanıcının oturum açtığı parola tabanlı veya birleştirilmiş kimlik bilgilerini saklayın,
- Kullanıcının oturum açma kimlik bilgilerini güncel tutun (örn. parola değişikliğinden sonra)
WebAuthn nedir? #
Web Yetkilendirmesi (Web Kimlik Doğrulaması), CM API’ye ortak anahtar kimlik bilgileri ekler. Örneğin, web sitelerine, aşağıdakileri kullanarak ikinci faktörlü kimlik doğrulamayı uygulamak için standart bir yol sağlar: FIDO 2.0 uyumlu kimlik doğrulayıcı cihazlar.
Teknik düzeyde WebAuthn, CM API’sini şu özelliklerle genişletir: PublicKeyCredential
arayüz.
Sorun nedir? #
Daha önce, geliştiricilere aşağıdaki kodla CM API’sini algılama özelliği konusunda rehberlik ediyorduk:
if (navigator.credentials && navigator.credentials.preventSilentAccess) {
// Use CM API
}But as you can see from the descriptions above, the `navigator.credentials` is
now expanded to support public-key credentials in addition to password
credentials and federated credentials.
The problem is that user agents don't necessarily support all kinds of
credentials. If you continue feature detect using `navigator.credentials`, your
website may break when you are using a certain credential type not supported by
the browser.
**Supported credential types by browsers**
table class="properties with-heading-tint">tbody>tr>
th>/th>
th>PasswordCredential / FederatedCredential/th>
th>PublicKeyCredential/th>
/tr>tr>th>Chrome
/th>td>Available
/td>td>In development
/td>/tr>tr>th>Firefox
/th>td>N/A
/td>td>Aiming to ship on 60
/td>/tr>tr>th>Edge
/th>td>N/A
/td>td>Implemented with a href="https://blogs.windows.com/msedgedev/2016/04/12/a-world-without-passwords-windows-hello-in-microsoft-edge/">older API/a>. New API (navigator.credentials) coming soon.
/td>/tr>/tbody>/table>
## The solution
You can avoid this by modifying feature detection code as follows to explicitly
test for the credential type that you intend to use.
```js
if (window.PasswordCredential || window.FederatedCredential) {
// Call navigator.credentials.get() to retrieve stored
// PasswordCredentials or FederatedCredentials.
}
if (window.PasswordCredential) {
// Get/Store PasswordCredential
}
if (window.FederatedCredential) {
// Get/Store FederatedCredential
}
if (navigator.credentials && navigator.credentials.preventSilentAccess) {
// Call navigator.credentials.preventSilentAccess()
}
Görmek gerçek değişiklikler örnek olarak örnek koda yapılmıştır.
Referans için, nasıl tespit edileceği aşağıda açıklanmıştır PublicKeyCredential
WebAuthn’da eklendi:
if (window.PublicKeyCredential) {
// use CM API with PublicKeyCredential added in the WebAuthn spec
}
Zaman çizelgesi #
WebAuthn’un mevcut en eski uygulaması Firefox’tur ve Mayıs 2018’in başlarında istikrarlı olması planlanıyor.
Nihayet #
Herhangi bir sorunuz varsa, şu adrese gönderin: @agektmr veya agektmr@chromium.org.