Freeradius
FreeRADIUS / Active Directory / 電腦身份驗證
我正在尋找一種簡單的轉彎方式:
User-Name = "host/DESKTOP-F6E023D.msad.domain.net"
到以下:
Stripped-User-Name := DESKTOP-F6E023D$ realm := msad.domain.net
在我的虛擬伺服器配置中,我使用 unlang 完成了以下操作:
if ( User-Name =~ /^host\/(.*)\.msad\.domain\.net$/i ) { update request { Stripped-User-Name := "%{1}$" realm := "msad.domain.net" } }
我希望使我的虛擬伺服器配置更通用,並處理多個域並將該功能移動到模組/策略中。我試圖創建一個策略,但正在努力使用正則表達式來拆分該字元串,以便我可以分配 Stripped-User-Name 和領域值。任何幫助將不勝感激。
./policy.d/filter
filter_computer_auth { if (&User-Name =~ /^host\/(.+)[\.](.*)$/) { update request { &Stripped-User-Name := "%{1}$" &realm := "%{2}" } } }
產量:
Stripped-User-Name := DESKTOP-F6E023D.msad.cnylab$ realm := net
正則表達式可能需要根據您的需要進行調整,但您可以創建一個包含如下內容的策略文件
my_host_username_regexp = '^host\/([-[:alnum:]]+)(\.([-[:alnum:].]*))*$' my_split_host_username { if (&User-Name && (&User-Name =~ /${policy.my_host_username_regexp}/)) { update request { &Stripped-User-Name := "%{1}" } if ("%{3}" != '') { update request { #&Stripped-User-Domain = "%{3}" &realm := "%{3}" } } updated } else { noop } }
我試圖複製freeradius 提供
split_username_nai
的策略以保持一致性。您可以通過在https://regex101.com/上對其進行測試來了解有關正則表達式的更多資訊