Yazılım Mimarileri ve Tasarım Desenleri Üzerine

OpenIddict #1 – OpenIddict Nedir? ve Authorization Server Nasıl Kurulur?

Merhaba,

Bu içeriğimizde Asp.NET Core uygulamalarında OAuth 2.0/OpenID Connect server’ları oluşturmak için tasarlanmış olan ve açık kaynak olarak geliştirilen OpenIddict Framework’ünü ele alıyor olacağız.

OpenIddict Nedir?

OpenIddict ilk olarak 2015 yılında temelleri atılmış olan ve OpenID Connect server kurmak için çözüm sağlayan bir kütüphanedir. Identity Server‘a nazaran biraz daha düşük seviyede işlevselliğe sahiptir.

Neden IdentityServer4 Yerine OpenIddict’i Kullanmalıyız?

Yıllarca .NET çatısı altında OAuth2 + OpenID Connect protokolleri eşliğinde güvenli bir token hizmeti sağlamak için IdentityServer kütüphanesinden istifade ettiğimize çoğunuz vakıftır. Lakin IdentityServer, gelecek sürümleri lisanslamaya karar verdiğinden dolayı, bu durum ticari uygulamalar için ekstradan maliyet kalemi olarak projelerimize yansımış bulunmaktadır. Her ne kadar iyi bir yazılım için ekstradan ödeme yapmak pek çok proje veya şirket için bir sorun teşkil etmese de, yine de bir alternatif aramanın zamanının geldiğini düşünmedik değil. Haliyle yaptığımız ufak araştırmalar neticesinde OpenIddict kütüphanesiyle karşılaştık. Denedik, test ettik. Bir nebze eksikliklerini gözlemlediysekte, basit ama etkili olduğuna kanaat getirdik. Ayrıca var olan bir ticari projemizde bu kütüphaneyi sahada tecrübe etme şansımız oldu. Nihayetinde edindiğimiz kazanımlar eşliğinde ve bu kütüphanenin tüm teferruatlarını bütünsel olarak derleyip bir yazı serisi olarak sizlere aktarmanın kararını vermiş bulunuyoruz.

OAuth2 ve OpenID Connect Nedir?(Hatırlayalım)

Esasında bu kavramları IdentityServer4 Nedir? OAuth 2.0 ve OpenID Connect Protokolleri Nelerdir? başlıklı yazımızda tam teferruatlı izah etmiş bulunuyoruz. Yine de usul gereği bu içeriğimizde hafiften özetlememiz gerekirse eğer; OAuth 2.0, uygulamalar arası veri transferinde kullanılan açık bir yetkilendirme(authorization) protokolüyken, OpenID Connect ise bir protokolden ziyade OAuth 2.0 üzerinde kimlik doğrulama(authentication) işlemlerini üstlenen bir katmandır.

OpenIddict Nasıl Çalışır?

Teknik olarak kullanıcı adı ve şifre doğrulamalarını harici bir provider olan authorization server üzerinden gerçekleştirdikten sonra, OAuth2 ve OpenID Connect akışları(flows) için OpenIddict devreye girmektedir. Bu akışlar diğer uygulamalar(clients) tarafından desteklenmekte ve temel olarak bu client’ları kullanan kullanıcılar için yetkilendirmeleri gerçekleştirmektedir.

Burada süreç şöyle cereyan etmektedir. Kullanıcı, authorization server tarafından yetki kontrolü sağlanan bir kaynağa client üzerinden erişmek istediği zaman önce bu kullanıcı client tarafından authorization server’a yönlendirilir. Kullanıcı gerekli authentication’ı sağlarsa eğer kaynağa erişebilmesi için yetkisinin olup olmadığı değerlendirilerek, duruma göre erişimi gerçekleştirilecek ya da gerçekleştirilmeyecektir.

Authorization Server Oluşturma

Şimdi bu içeriğimizde bir Authorization Server için minimum kurulum gerektirecek şekilde uygulama inşa ederek sonraki içeriklere temel oluşturacağız.

Authorization Server için login işlemi yapabileceğimiz bir sayfanın olması gayet yerinde olacaktır. Haliyle biz bu uygulamayı Asp.NET Core MVC mimarisinde tasarlamayı tercih ediyoruz.

Netice itibariyle;
Artık elimizde authentication ile çalışan temel bir Asp.NET Core MVC projemiz mevcuttur. Bundan sonraki içeriklerimizde OpenIddict ile yapacağımız çalışmalarda bu uygulama üzerinden temel yetkilendirme operasyonlarını gerçekleştiriyor olacağız.

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

Not : Örnek uygulamanın kaynak kodlarına aşağıdaki github adresinden erişebilirsiniz.
https://github.com/gncyyldz/OpenIddict-Authorization-Server-Example

Mobil sürümden çık