рд╡рд╛рдИрдлрд╛рдИ рдиреЗрдЯрд╡рд░реНрдХ (рд╕рд┐рд╕реНрдХреЛ WLC -> FreeRadius -> PHP -> рд╡реЗрдм рдкреЗрдЬ) рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдорд╛рдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ

рдореИрдВ рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╕рдВрдЧрдарди рдХреЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рд╡рд╛рдпрд░рд▓реЗрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкрд╣реБрдВрдЪ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдиреЗрдЯрд╡рд░реНрдХ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдиреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ - рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреГрдердХ рдкреНрд░рдгрд╛рд▓реАред рдПрдХрдорд╛рддреНрд░ рд╕рд╛рдорд╛рдиреНрдп рдШрдЯрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдпрд░ 3 рд╕реНрддрд░ рдкрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ - рдЕрд░реНрдерд╛рдд, рдиреЗрдЯрд╡рд░реНрдХ рдЦреБрд▓рд╛ рд╣реИ, рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ ( рд╕рд┐рд╕реНрдХреЛ рдбрдмреНрд▓реНрдпреВрдПрд▓рд╕реА рд╡реЗрдм рдСрдереЗрдВрдЯ ) рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЦрд╛рддреЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рд▓реЗрдХрд┐рди, рд╣реЗрд▓реНрдкрдбреЗрд╕реНрдХ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг, рд▓реЙрдЧрд┐рди рдмрдирд╛рдиреЗ рдФрд░ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдкрд╛рд╕рд╡рд░реНрдб рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд╣реАрдВ рдерд╛ред рдХрд╛рд░реНрдп рдореМрдЬреВрджрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛, рдЬреЛ рдПрдХ рдорд╛рдирдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдордПрд╕ рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рд░реНрд╡рд░ рдХреЗ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдирдкреАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рд╕реАрдзреЗ рдПрд▓рдбреАрдПрдкреА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдФрд░ рдПрдХ рдерд╛ (рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдбреА рдФрд░ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдЗрдВрдЯреНрд░рд╛рдиреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдПрд▓рдбреАрдПрдкреА), рд▓реЗрдХрд┐рди рд╡рд╛рдИрдлрд╛рдИ рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рдереАред рдЕрдзрд┐рдХрддрдо рдЬреЛ рд╣рдо рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ, рд╡рд╣ рдЗрдВрдЯреНрд░рд╛рдиреЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдбреА рдЦрд╛рддреЗ рдФрд░ рдЦрд╛рддреЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╣реИред рд╡реЗ рдмреИрда рдЧрдП, рд╕реЛрдЪрд╛ ... рдФрд░ рдпрд╣реА рд╡реЗ рд╕рд╛рде рдЖрдП рдереЗ


FreeRadius рдореЗрдВ рдмрд╛рд╣рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЬреИрд╕реЗ PHP рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
authorize{ update control { Auth-Type := `/usr/bin/php -f /etc/raddb/yourscript.php '%{User-Name}' '%{User-Password}'` } 


рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, PHP рдХреЛ рдХреЗрд╡рд▓ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕реНрд╡реАрдХрд╛рд░ рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдордиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд▓ рдХрд┐рдпрд╛ред рдХреНрдпрд╛ рд╣реБрдЖ рдЗрд╕рдХрд╛ рдЖрд░реЗрдЦ:


PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЯреНрд░рд╛рдиреЗрдЯ рдкреЗрдЬ рдореЗрдВ '% {рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдирд╛рдо}' '% {рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд╛рд╕рд╡рд░реНрдб}' рдХреЗ рд╕рд╛рде рдкреНрд░рд╡реЗрд╢ рдХрд░рддреА рд╣реИ, рдЗрд╕реЗ рдХрд░реНрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ рддреЛ "рдПрдХреНрд╕реЗрдкреНрдЯ" рдХрд░реЗрдВред

рдпрд╣рд╛рдБ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╣реИ (рдЖрдИрдмреАрдПрдо рддрд┐рд╡реЛрд▓реА рдПрдХреНрд╕реЗрд╕ рдореИрдиреЗрдЬрд░ рд╡реЗрдмрд╕реАрдПрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЯреНрд░рд╛рдиреЗрдЯ рдкрд░ рд▓реЙрдЧрд┐рдВрдЧ)
  $authSuccessful = False; $user = $argv[1]; $password = $argv[2]; $url = 'https://intranet.of.the.company.accessible.from.internet/pkmslogin.form'; $fields_string= "username=".$user."&password=".$password."&login-form-type=pwd&submit=Login"; //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); curl_setopt($ch,CURLOPT_COOKIEJAR, "cookie.txt"); curl_setopt($ch,CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_POSTREDIR, 0); curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); //execute post $result = curl_exec($ch); curl_close($ch); if (strpos($result,'Your login was successful') !== false) $authSuccessful = True; if ($authSuccessful == True) echo "Accept\n"; else echo "Reject\n"; 


рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рд╣рд░ рдХреЛрдИ рдЦреБрд╢ рдерд╛ ... рд╕рд┐рд╡рд╛рдп рдЙрдирдХреЗ рдЬрд┐рдирдХреЗ рдЗрдВрдЯреНрд░рд╛рдиреЗрдЯ рдкрд╛рд╕рд╡рд░реНрдб рдпрд╛рдж рдирд╣реАрдВ рдерд╛ (рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЗрдВрдЯреНрд░рд╛рдиреЗрдЯ рдкрд░ рдкрд╛рд╕рд╡рд░реНрдб рдПрдбреА рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗ рдЕрд▓рдЧ рдереЗ)ред рдЖрдИрдЯреА рдмреЙрд╕, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдкрд╛рд╕рд╡рд░реНрдб рд╕рднреА рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рди рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдПрдХ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдбреА рдореБрдЦреНрдп рдкрд╛рд╕рд╡рд░реНрдб рдерд╛), рд╣рдореЗрдВ рддрдХрдиреАрдХреА рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдПрдХ Citrix XenApp рд╕рд░реНрд╡рд░ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ MS AD рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдерд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреНрдпрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛:
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб (Citrix Web Interface v 5.4 рдкрд░ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ)
  $authSuccessful = False; $user = $argv[1]; $password = $argv[2]; //WebInterface 5.4.x $url = 'https://the.web.interface.of.citrix.xenapp/Citrix/XenApp/auth/login.aspx'; $fields_string= "user=".$user."&password=".$password."&LoginType=Explicit"; //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); curl_setopt($ch,CURLOPT_COOKIEJAR, "cookie.txt"); curl_setopt($ch,CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_POSTREDIR, 0); curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); //execute post $result = curl_exec($ch); //close connection curl_close($ch); if (strpos($result,'default.aspx') !== false) { $authSuccessful = True; } if ($authSuccessful == True) echo "Accept\n"; else echo "Reject\n"; 


рд╣рдордиреЗ рдЖрдЧреЗ рднреА рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рджреЛрдиреЛрдВ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ - рдЕрдм рдЗрдВрдЯреНрд░рд╛рдиреЗрдЯ рд▓реЙрдЧрд┐рди рдХреЛ рдкрд╣рд▓реЗ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдлрд┐рд░ MS AD рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Citrix WI
рдЕрдВрддрд┐рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб
  $authSuccessful = False; $user = $argv[1]; $password = $argv[2]; $url = 'https://intranet.of.the.company.accessible.from.internet/pkmslogin.form'; $fields_string= "username=".$user."&password=".$password."&login-form-type=pwd&submit=Login"; //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); curl_setopt($ch,CURLOPT_COOKIEJAR, "cookie.txt"); curl_setopt($ch,CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_POSTREDIR, 0); curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); //execute post $result = curl_exec($ch); curl_close($ch); if (strpos($result,'Your login was successful') !== false) $authSuccessful = True; if ($authSuccessful == False) { //WebInterface 5.4.x $url = 'https://the.web.interface.of.citrix.xenapp/Citrix/XenApp/auth/login.aspx'; $fields_string= "user=".$user."&password=".$password."&LoginType=Explicit"; //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); curl_setopt($ch,CURLOPT_COOKIEJAR, "cookie.txt"); curl_setopt($ch,CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_POSTREDIR, 0); curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); //execute post $result = curl_exec($ch); //close connection curl_close($ch); if (strpos($result,'default.aspx') !== false) { $authSuccessful = True; } } if ($authSuccessful == True) echo "Accept\n"; else echo "Reject\n"; 

Source: https://habr.com/ru/post/In190156/


All Articles