freeradius unlang

  • Bir authorization authorization veya authentication modülünün sonucu değiştirmek : Genel olarak bir modülün, pap, sql, expiration ve benzeri fail etmesi sonucunda istek red edilir ve Auth-Reject gönderilir. Fakat çoğu senaryoda şifresi yanlış olan veya expire olan kullanıcılar için reject etmek yerine, kullanıcıyı bağlayıp redirect ve benzeri uygulamaların yapılacağı bir profile almak istenir. Dolayısı ile bu modüllerin çıktılarının değiştirlimesi gerekir. Bunun için modül return code değerleri değiştirilir.

Overriding the Action Table

pap modülünün return code'ları : invalid, fail, reject ve ok'dir. Diyelimki reject, yani password hatası durumunda kullanıcıyı reject etmek yerine farklı bir profile almak istiyoruz.

pap {
reject = 1 / reject action değerini 1 yapıyoruz bu şekilde code devam ediyor.
}

Daha sonra reject ise reply attribute'una istediğimiz değerleri yazıyoruz. Burada ben dummy bir attribute kullandım. İstenilen attribute kullanılabilir. Dikkat edilmesi gereken, kullanıcının diğer reply attributeları'da gönderilecektir. Bunların temizlenmesi veya silinmesi gerekebilir. 

if (reject) {

    update control { 

         request:My-Auth-Result += "Access-Reject" # birazdan reject'i ok çevireceğiz. Dolayısı ile gerçek auth-result kaybolacak. Eğer post-auth tablosu kullanılıyor ise sonuç olarak access-accept yazacaktır. Gerçek nedeni dummy bir attribute yaratarak kullanıyoruz.

       } 

   ok # bu authentication modulü, eğer ok verilmez ise access-reject gonderilir.

 } else {

      update control { 

         request:My-Auth-Result += "Access-Accept" 

       } 

 }
 Bir başka örnek ise expire modülü için ;
expiration  {

    userlock = 1 / expire modülü kullanıcının expire olması durumunda derhal return ederek, diğer modüllerin işlenmesi keserek access-reject döner. Bunu değiştirmek için userlock, expire durumu, için userlock action codu'unu devam şeklinde değiştiriyoruz.

}
    if (userlock) { 

      update reply { 

         Reply-Message += '%{User-Name:-unknown} authorized after expired!' 

       } 

    }

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.