Xamarin Forms Client IdentityServer(Oidc) Entegrasyonu
Herkese selamlar, bu makalemizde IdentityServer4'ü Xamarin Forms mobile client projemize nasıl entegre edeceğimiz konusunu ele alacağız.
Öncelikle IdentityServer’ün bir tanımlamasını yapacak olursak aşağıdaki gibi bir tanımlama ile karşılaşıyoruz.
IdentityServer, kimlik doğrulaması için OpenID Bağlan (OIDC) ve OAuth 2.0 standartlarını uygulayan bir ASP.NET Core. Web, yerel, mobil veya API uç noktaları gibi tüm uygulamalarınıza yönelik isteklerin kimliğini doğrulamak için ortak bir yol sağlamak üzere tasarlanmıştır.
Haydi kod yazalım.
Öncelikle bir Xamarin.Forms projesi oluşturuyoruz.
Yapılandırmamızda IdentityModel.OidcClient kütüphanesinden faydalanacağız. IdentityModel.OidcClient paketimizi projemize dahil ediyoruz.
Install-Package IdentityModel.OidcClient -Version 4.0.0
MainPage.xaml sayfamıza bir adet button ve outputları izleyeceğimiz bir label ekliyoruz.
Code behind’a geliyoruz ve işte ilgili kodlarımız:
Kodlarımızı incelediğimiz zaman OidcClientOptions nesnemizi test için IdentityServer’in test verileriyle yapılandırdığımızı görüyorsunuz. İlk olarak test verileriyle ayağa projemizi ayağa kaldıracağız ve sonrasında da kendi yapılandırmamızı nasıl yapacağımız ve karşılaşacağımız senaryoları inceliyor olacağız.
Code behinddaki kodlarımızı incelediğimiz zaman bir Dependency Service çağrısı yaptığımızı göreceksiniz. Çok detaya girmeden bu arkadaşımızın ne iş yaptığını açıklayacak olursak;
Login işlemi yapacağımız bir ekranımız söz konusu olacak ve bu form barındıran sayfamızı hangi tarayıcı üzerinden açağımızı söylediğimiz yapılandırmamız olduğunu söyleyebiliriz. Biz burada chrome tarayıcısını kullanıyor olacağız.
O zaman Xamarin.Android projemize odaklanıyoruz ve kodlarımızı yazmaya devam ediyoruz.
ChromeCustomTabsBrowser ve OidcCallbackActivity sınıflarımızın kodlamalarını da tamamladıktan sonra şimdi de MainActivity.cs içerindeki OnCretate metotunda bu sınıflarımızı initiliaze edelim.
Android tarafında kodlamamızı bitirdikten sonra Xamarin.IOS katmanına geliyoruz ve ilgili kodlamalarımızı yapıyoruz.
Şimdi de AppDelegate.cs sınıfı içerisindeki FinishedLaunching metotuna geliyoruz ve ilgili sınıfımızı register ediyoruz.
Temelde kodlamalarımızı bitirmiş olduk daha önce bahsettiğimiz gibi test verilerimiz ile bir testlerimizi yapalım sonra kendi yapılandırmamız ile devam edelim.
Sayfamıza eklediğimiz Login butonuza tıklıyoruz ve akışımızı başlatıyoruz.
LoginAsync metotuna çağrı yaptığımız zaman login işlemini yapacağımız yapılandırmamız özelinde bizi tarayıcımız üzerinde ilgili sayfamız karşılıyor.
Bahsettiğimiz login sayfamız işte burada. Hemen Login butonu altında yer alan bob/bob veya alice/alice test verilerimiz ile login oluyoruz.
Login işlemimizi yaptıktan sonra bir redirect sayfası görünüyor ve kod akışımız devamında bize bir response dönüyor.
Dönen responsu incelediğimiz zaman tokenumuzun oluştuğunu gözlemlemekteyiz.
Böylelikle bu makalemizin ilk adımını tamamlamış oluyoruz. Buradan sonraki geliştirmelerimiz uygulamamız üzerinde tokenımızı tutmak ve sonraki çağrılarımızda header bilgisi olarak apilerimize bu token bilgisini geçmek olacak.
Bulunduğumuz noktada IdentityServer projemizi yayınladıktan sonra makalede bahsettiğimiz süreçlerin kendi yapılandırmamız ile sağlıklı bir şekilde çalıştığını göreceksiniz.
Buradan sonra makalemizin akışı localde projemizi geliştirmeye devam ederek kendi IdentityServer yapılandırmamız ile karşılaşacağımız senaryolar üzerinde geliştirmelere makalemizin bir sonraki adımı ile devam edeceğiz.
Umarım faydalı olmuştur. Keyifli kodlamalar.
Part 2