IdentityServer4 Yazı Serisi #5 – Discovery Endpoint

Merhaba,

IdentityServer4 framework’ü, kendisiyle belli başlı ihtiyaçlara istinaden iletişim kurulabilmesi için hali hazırda mevcut olan endpointler barındırmaktadır. Bizler bu endpointler vasıtasıyla sistemin getirisi olan bazı işlevlere erişebilmekte ve ihtiyaç doğrultusunda kullanabilmekteyiz. Bu endpoint’lere misal olarak; yazı serimizin 3. makalesi olan Client Credentials başlıklı içeriğimizde, client’ların Auth Server’dan token talep edebilmesi için kullandığı /connect/token endpoint’ini verebiliriz. Esasında bu endpoint IdentityServer4 tarafından bizlere hali hazırda verilmiş olan ve literatürde ‘Token Endpoint’ olarak geçen bir endpoint’tir. Bu içeriğimizde IdentityServer4’ün bizlere sunduğu bu endpoint’lerden sistemi ve sistemin nice özelliklerini keşfetmemizi sağlayacak olan Discovery Endpoint’ini inceliyor olacağız.

Discovery Endpoint, IdentityServer4’ün sunduğu özellikleri keşfedebilmek için kullanılan bir endpoint’tir.

Discovery Endpoint’e nasıl istekte bulunulabilir?
Kullanılan IdentityServer4 mimarisinin özelliklerini keşfedebilmek için
/.well-known/openid-configuration endpoint’ine istek gönderilmesi yeterlidir. Bu endpoint, Dicovery Endpoint’e karşılık gelmektedir.

IdentityServer4 Yazı Serisi #5 – Discovery Endpoint
İlgili endpoint’e ‘GET’ isteği yapıldığı taktirde yukarıdaki ekran görüntüsünde olduğu gibi hedef IdentityServer4 uygulamasının tüm bilgileri tarafımıza gelmektedir. Bu bilgiler üzerinden; ilerideki makalelerde tek tek ele alacağımız diğer hazır endpoint’lere(yeşil), Auth Server’ın desteklediği yetkilere(scopes_supported)(mavi), hangi yetki/erişim tiplerini desteklediğine(grant_types_supported)(mor) yahut desteklenen dönüş türlerine(response_types_supperted)(kahverengi) gibi birçok özelliğe erişebilmekteyiz.

Ayrıca yeri gelmişken yukarıda referans edilen önceki makaledeki(Client Credentials) bir noktayı ilgilendiren nazik bir hususa değinmekte fayda vardır. Discovery Endpoint’e yapılan istek neticesinde gelen result’un ikinci özelliği olan ‘jwks_uri’ değerine göz atarsanız eğer API’ların public key almak için IdentityServer4 uygulamasında istek attıkları endpoint’i göreceksiniz. Evet… Bu endpoint’e bizler manuel istek göndermesekte; API’lar, client’tan gelen token’ın Auth Server’dan gelip gelmediğini doğrulayabilmek için ilgili token’da ki private key değerine karşılık Auth Server’dan bu endpoint ile public key’i talep etmektedirler. Gelen public key ile private key check edilip, doğrulamayı gerçekleştirirler… Dolayısıyla API’ın otomatik bir şekilde bu endpoint’e yaptığı isteği bizler manuel olarak icra edersek doğal olarak public key’i gözlemleme fırsatı elde edebiliriz.
IdentityServer4 Yazı Serisi #5 – Discovery Endpoint
Görüldüğü üzere public key’i elde edebilmekte ve görüp, inceleyebilmekteyiz. Hoca public key’e biz bu şekilde ulaşabiliyorsak, kolunu sallayan elalem’de ulaşamaz mı? diye serzenişte olduğunuzu duyar gibiyim… Bu sorunuza cevabım -Evet, ulaşabilir 🙂 olacaktır. Yahu bu güvenlik açığı şey etmez mi? -Etmez. public key’in 3. şahıslar tarafından elde edilmesi hiçbir risk taşımayacak, tehlike arz etmeyecektir. Mühim olan private key’in kötü niyetli kişilerin eline geçme ihtimalidir. Bu durumu şöyle örneklendirip, açıklığa kavuşturabiliriz; Hırsız her ne kadar kilidinize ulaşsa dahi(public key), anahtar(private key) sizde olduğu sürece sıkıntı olmayacaktır…

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. 26 Ekim 2020

    […] IdentityServer4 Yazı Serisi #5 – Discovery Endpoint […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*