Xamarin Forms Client IdentityServer(Oidc) Entegrasyonu — Part2

Herkese selamlar, makalemizin ilk adımını okuyup buraya geldiyseniz Xamarin client projemiz üzerinde yapılandırmalarımızı yaptıktan sonra localde projemiz üzerinde geliştirmelerimize nasıl devam edeceğimiz konusu olacak.

Ben yine de ilk makalenin linkini buraya iliştireyim. Çünkü esas olay orada dönüyor :)

Bu noktada aslında elimizde bir IdentityServer4 projemiz olması gerekiyor. Bu konu oldukça detaylı olduğu için konumuzu da dağıtmamak adına işin bu tarafına şuan için girmeyeceğim.

Fırsat bulursam hem kendim detaylarıyla öğrenmek adına hem de Türkçe kaynak oluşturmak adına bu tarafta da bir makale serisi yazmaya çalışacağım.

Bir IdentityServer projesini incelediğiniz zaman hemen karşılaşacağımız yapılandırmalarımızı yaptığımız bir Config.cs dosyası söz konusudur.

Bu Config dosyası içerisinde resourcelar, scopelar ve clientlarımız için yapılandırmalar ile karşılaşacağız.

Code behind tarafında OidcClientOptions nesnesi üzerinde client tarafındaki yapılandırmalarımız vardı. Bu yapılandırmalarımızı kendi projemiz üzerinden yaptığımızı varsayarak karşılaşacağımız senaryolar üzerinden devam edeceğim.

Localhost üzerinde IdentityServer ile Xamarin client projelerimizi haberleştirmeye çalıştığımız zaman aşağıdaki aşağıdaki hata ile karşılaşacaksınız.

Bahsi geçen /.well-known/openid-configuration adresine tarayıcımız üzerinden çağrı yaptığımız zaman aslında localde herşeyin yolunda olduğunu göreceksiniz.

Hatamızın sebeplerinden bir tanesi Xamarin clientımızın bizim localhostumuzdan haberi olmadığıdır. Diğer sebep de Android8 sonrası gelen ssl olmadan çalıştığımız zaman bunun için projemiz üzerinde bir yapılandırma yapmamız gerektiğidir.

İlk adım olarak xamarin client projemizden localhosta erişelim. OidcClientOptions nesnemize geliyoruz ve kodlamamızı yapıyoruz.

Authority alanından localhost’a erişmek için http://10.0.2.2:yourport yapılandırmamız ve RequereHttps parametremizi false geçerek başlıyoruz.

Sonrasında yukarıda bahtettiğim Android8 sonrasında gelen yapılandırmamız için aşağıdaki linkte yer alan adımları uyguluyoruz.

İlk olarak Xamarin.Android katmanda resources klasörü altında network_security_config.xml dosyası oluşturuyoruz ve kodluyoruz.

Yine dikkat ederseniz burada da localhost’a erişmek için kullandığımız adresimiz üzerinden yapılandırıyoruz.

Sonrasında AndroidManifes.xml dosyasına geliyoruz application tagi içerisine bu bir önceki adımda oluşturduğumuz network_security_config dosyamızı tanıtıyoruz.

Xamarin client tarafındaki kodlamalarımız böylelikle tamamlamış oluyoruz.

Şimdi IdentityServer projemizde startup.cs’e geliyoruz ve kullandığımız tarayıcı olan chrome özelinde bir takım kodlamalar yapmamız gerekiyor. Bu konuyla ilgili çok fazla detaya girmeyeceğim. Aslında burada eski bir tarayıcı kullansak muhtemelen böyle bir yapılandırma yapmamıza ihtiyaç kalmayacak.

Konuyla ilgili detaylı bilgi için;

Yapılandırmalarımızı tamamladıktan sonra haydi test localdeki projelerimizi test edelim.

Test aşamasında yine tarayıcımızın localhost üzerinden başarıyla açıldığını gözlemliyoruz.

LoginAsync() metotundan bize tokenumuzun başarıyla döndüğünü görüyoruz.

Böylelikle ikinci makalemizi de tamamlamış oluyoruz. Buradan ilk makalemizin sonuna atıfla buradan sonraki geliştirmelerimiz uygulamamız üzerinde tokenımızı tutmak ve sonraki çağrılarımızda header bilgisi olarak apilerimize bu bearer bilgisini geçmek olacak.

Umarım faydalı olmuştur. Keyifli kodlamalar.

Software Developer