IdentityServer4 Yazı Serisi #15 – Merkezi Üyelik Sistemi – Onay(Consent) Sayfası Ayarlama

Merhaba,

IdentityServer4 Yazı Serisinin bu onbeşinci makalesinde kullanıcılardan istenilen bilgiler için onay sayfasının nasıl ayarlanabileceğini inceleyeceğiz.

Şuana kadar client, Auth Server’dan kullanıcıya dair istediği tüm bilgileri, kullanıcı giriş yaptığı taktirde elde edebilmekte ve kullanabilmektedir. Artık burada kullanıcının paylaşılacak bilgilerini iradesine dayanarak seçebilmesi için araya bir onay sürecini dahil etmemiz gerekmektedir. Bunun için Auth Server’da ki ‘Config.cs’ dosyasında tanımlanan client bilgilerinde ‘RequireConsent’ değerini ‘true’ yapmamız yeterli olacaktır.

        public static IEnumerable<Client> GetClients()
        {
            return new List<Client>
            {
                new Client
                        {
                            ClientId = "GarantiBankasi",
                            .
                            .
                            .
                        },
                new Client
                        {
                            ClientId = "HalkBankasi",
                            .
                            .
                            .
                        },
                new Client
                        {
                            ClientId = "OnlineBankamatik",
                            .
                            .
                            .
                            RequireConsent = true
                        }
            };
        }

‘RequireConsent’ özelliğinin true olarak ayarlanması neticesinde artık ilgili client’ın istediği bilgileri elde edip yetkilendirilebilmesi için kullanıcıdan onay alması gerekmektedir. Haliyle bir onay sayfasına ihtiyacımız vardır.

Hatırlarsanız eğer yazı serimizin 11. makalesinde(bknz : Merkezi Üyelik Sistemi Temelleri) Auth Server’da ki UI kısmını hızlıca ayağa kaldırmamızı sağlayan IdentityServer4.Quickstart.UI paketini kullanmıştık. İlgili paketin getirdiği yapılanmalara göz atarsak eğer aşağıdaki görselde olduğu gibi onay sayfası ve işlemleriyle ilgili tüm yapılanmaları barındırmakta ve bizlere sunmaktadır.
IdentityServer4 Yazı Serisi #15 - Merkezi Üyelik Sistemi – Onay(Consent) Sayfası Ayarlama
Dolayısıyla ilgili paket bizleri yine bir sayfa tasarımından kurtarmakta ve herhangi bir işe gerek kalmaksızın Auth Server aşağıdaki gibi giriş yapan kullanıcıyı direkt olarak ilgili onay sayfasına yönlendirerek, kullanıcı tarafından verilecek onayı beklemektedir.

IdentityServer4 Yazı Serisi #15 - Merkezi Üyelik Sistemi – Onay(Consent) Sayfası Ayarlama
Yukarıdaki ekran görüntüsünü incelerseniz eğer client’ın hem ‘Config.cs’ dosyasında belirtilen ‘AllowedScopes’ değerleriniIdentityServer4 Yazı Serisi #15 - Merkezi Üyelik Sistemi – Onay(Consent) Sayfası Ayarlamahem de client uygulamasının ‘Startup.cs’ dosyasında ‘Scope.Add’ ile eklenen değerleriniIdentityServer4 Yazı Serisi #15 - Merkezi Üyelik Sistemi – Onay(Consent) Sayfası Ayarlamagetirmekte ve hangilerine onay verileceğini kullanıcıya sormaktadır. Yani anlayacağınız onay işlemini aktifleştirmek için client’ta ‘RequireConsent’ property’sine true değerinin atanması tek başına yeterli olmaktadır.

Burada dikkatinizi çekmek istediğim iki husus mevcuttur.

İlk olarak onay sayfasında bulunan ve zorunlu seçilmek mecburiyetinde olan ‘Your user identifier’ seçeneğidir. Bu seçenek OpenId değerine karşılık gelmektedir. OpenId değeri önceki makalelerimizde de ifade edildiği gibi kullanıcı id/user id/subject id’e karşılık gelen bir değerdir ve token içerisinde kesinlikle olmak zorundadır. Bu yüzden kullanıcının ilgili değere onay vermemek gibi bir hüvviyeti bulunmamaktadır.

İkinci olarak ise, verilen onayın kaydedilmesini sağlayacak olan ‘Remember My Desicion(Kararlarımı Kaydet)’ seçeneğinin geçerli olabilmesi için ‘Offline Access’ seçeneğinin seçili olmaması gerektiğidir. ‘Offline Access’, refresh token’a karşılık gelmektedir. Eğer ki bir kullanıcı refresh token kullanıyorsa yeni eklenen yetkiler eşliğinde bir access token üretilebilir. Bu durumda yeni bir onay gerektirebilir. Haliyle refresh token kullanılırken kullanıcının verdiği onayın kaydedilmemesi mantıken doğru olacağından dolayı bu mantık default olarak kontrolle desteklenmiştir.

Refresh Token’a Neden Offline Access Denmektedir?
Kullanıcı uygulamaya girmeksizin, offline bir şekilde arkaplanda kullanıcı adına access token talep edip, edinebildiği için.

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

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

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

*