WebAuthn (Web Authentication), açık anahtarlı şifreleme kullanarak güvenli, parolasız ve kimlik avına dayanıklı kimlik doğrulamayı mümkün kılan bir W3C standardıdır. Güvenliği ve kullanıcı deneyimini iyileştirmek için passkey'lerle yaygın olarak kullanılır. Ancak kullanıcıları WebAuthn ile doğrulamak yalnızca ilk adımdır. Başarılı bir kimlik doğrulamadan sonra, genellikle birden fazla API uç noktasında eylemlerini yetkilendirmeniz gerekir.
Bu makalede şunları nasıl yapacağınızı ele alacağız:
- Passkey tabanlı kimlik doğrulama için WebAuthn kullanma.
- WebAuthn sunucunuzdan bir bearer token alma.
- Döndürülen bearer tokenı sonraki HTTP isteklerini yetkilendirmek için kullanma.
1. WebAuthn Kimlik Doğrulama Akışını Anlama
WebAuthn, açık anahtarlı şifreleme ve istemcide güvenli bir şekilde depolanan kimlik bilgileri (örneğin tarayıcıdaki veya cihazdaki passkey'ler) etrafında döner. Kimlik doğrulama akışı genellikle şu adımları içerir:
Adım 1: Kimlik Doğrulamayı Başlatın- İstemci (tarayıcı/uygulama), sunucudan bir WebAuthn challenge ister.
- Sunucu bir challenge oluşturur ve bunu istemciye gönderir.
- Tarayıcı, bir passkey'de depolanan özel anahtarı kullanarak challenge'ı imzalamak için WebAuthn API'sini (
navigator.credentials.get) kullanır. - İmzalanan onay sunucuya geri gönderilir.
- WebAuthn sunucusu, ilgili açık anahtarı kullanarak onayı doğrular.
- Geçerliyse sunucu kullanıcının kimliğini doğrular.
Bu noktada, kullanıcının kim olduğunu teyit ettiniz, ancak API'lerinize erişimi yetkilendirmek için hâlâ bir yola ihtiyacınız var.
2. WebAuthn Başarısından Sonra Bearer Token Döndürme
Başarılı bir kimlik doğrulamadan sonra sunucunun, yeni bir websocket veya HTTP bağlantısı açmak için kullanılacak bir bearer token göndermesini isterseniz token = true parametresini geçirin. Örnek:
{
"username": "alice@example.com", "token": true
}
Başarılı bir Kimlik Doğrulamadan sonra sunucu şuna benzer bir yanıt gönderir:
{
"verified": "ok",
"authentication": {
"token": "C760C1C39E3D4E829693A13F18F5CFDE537B516336FC48F7BAB0276176F9E6DE"
}
}
Bir istek yetkilendirilmediğinde OnWebAuthnUnauthorized olayı çağrılır ve bağlantı kesilir; burada hangi uç noktaların WebAuthn Kimlik Doğrulaması gerektirdiğini ve hangilerinin gerektirmediğini yapılandırabilirsiniz.
Neden Bearer Token Kullanmalısınız?
- Her istekte yeniden kimlik doğrulama yapma ihtiyacını ortadan kaldırır.
- Mikro hizmetler arasında durumsuz yetkilendirmeye olanak tanır.
- Modern API güvenlik kalıplarıyla sorunsuzca entegre olur.
3. Bearer Tokenı API Yetkilendirmesi için Kullanma
Yeni bir tokenınız olduğunda, bu bearer token ile bir yetkilendirme başlığı göndermeniz yeterlidir. Bearer Tokenı yapılandırmak için TsgcHTTP1Client'in CustomHeaders özelliğini kullanabilirsiniz. Örnek:
procedure GetHTTPRequest(const aURL: string; const aToken: string): string;
var
oHTTP: TsgcHTTP1Client;
begin
oHTTP := TsgcHTTP1Client.Create(nil);
Try
oHTTP.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + aToken);
result := oHTTP.Get(aURL);
Finally
oHTTP.Free;
End;
end;
4. Uçtan Uca Akışa Genel Bakış
İşte eksiksiz üst düzey sıralama:

