hello everybody. we are trying to external php script to authenticate user pass. radius return access-accept to nas but client ask user pass again ... here is the -X output; FreeRADIUS Version 2.1.12, for host i386-unknown-openbsd5.1, built on Feb 7 2012 at 20:30:59 Copyright (C) 1999-2009 The FreeRADIUS server project and contributors. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You may redistribute copies of FreeRADIUS under the terms of the GNU General Public License v2. Starting - reading configuration files ... including configuration file /etc/raddb/radiusd.conf including configuration file /etc/raddb/clients.conf including files in directory /etc/raddb/modules/ including configuration file /etc/raddb/modules/acct_unique including configuration file /etc/raddb/modules/always including configuration file /etc/raddb/modules/attr_filter including configuration file /etc/raddb/modules/attr_rewrite including configuration file /etc/raddb/modules/chap including configuration file /etc/raddb/modules/checkval including configuration file /etc/raddb/modules/counter including configuration file /etc/raddb/modules/cui including configuration file /etc/raddb/modules/detail including configuration file /etc/raddb/modules/detail.example.com including configuration file /etc/raddb/modules/detail.log including configuration file /etc/raddb/modules/digest including configuration file /etc/raddb/modules/dynamic_clients including configuration file /etc/raddb/modules/echo including configuration file /etc/raddb/modules/etc_group including configuration file /etc/raddb/modules/exec including configuration file /etc/raddb/modules/expiration including configuration file /etc/raddb/modules/expr including configuration file /etc/raddb/modules/files including configuration file /etc/raddb/modules/inner-eap including configuration file /etc/raddb/modules/ippool including configuration file /etc/raddb/modules/krb5 including configuration file /etc/raddb/modules/linelog including configuration file /etc/raddb/modules/logintime including configuration file /etc/raddb/modules/mac2ip including configuration file /etc/raddb/modules/mac2vlan including configuration file /etc/raddb/modules/otp including configuration file /etc/raddb/modules/mschap including configuration file /etc/raddb/modules/ntlm_auth including configuration file /etc/raddb/modules/opendirectory including configuration file /etc/raddb/modules/pap including configuration file /etc/raddb/modules/passwd including configuration file /etc/raddb/modules/policy including configuration file /etc/raddb/modules/preprocess including configuration file /etc/raddb/modules/radutmp including configuration file /etc/raddb/modules/realm including configuration file /etc/raddb/modules/redis including configuration file /etc/raddb/modules/rediswho including configuration file /etc/raddb/modules/replicate including configuration file /etc/raddb/modules/smbpasswd including configuration file /etc/raddb/modules/smsotp including configuration file /etc/raddb/modules/soh including configuration file /etc/raddb/modules/sql_log including configuration file /etc/raddb/modules/sqlcounter_expire_on_login including configuration file /etc/raddb/modules/sradutmp including configuration file /etc/raddb/modules/unix including configuration file /etc/raddb/modules/wimax including configuration file /etc/raddb/eap.conf including configuration file /etc/raddb/sql.conf including configuration file /etc/raddb/sql/mysql/dialup.conf including configuration file /etc/raddb/policy.conf including files in directory /etc/raddb/sites-enabled/ including configuration file /etc/raddb/sites-enabled/control-socket including configuration file /etc/raddb/sites-enabled/default including configuration file /etc/raddb/sites-enabled/inner-tunnel main { user = "_freeradius" group = "_freeradius" allow_core_dumps = no } including dictionary file /etc/raddb/dictionary main { name = "radiusd" prefix = "/usr/local" localstatedir = "/var" sbindir = "/usr/local/sbin" logdir = "/var/log/radius" run_dir = "/var/run/radiusd" libdir = "/usr/local/lib/freeradius" radacctdir = "/var/log/radius/radacct" hostname_lookups = no max_request_time = 30 cleanup_delay = 5 max_requests = 1024 pidfile = "/var/run/radiusd/radiusd.pid" checkrad = "/usr/local/sbin/checkrad" debug_level = 0 proxy_requests = no log { stripped_names = no auth = yes auth_badpass = yes auth_goodpass = yes } security { max_attributes = 200 reject_delay = 1 status_server = yes } } radiusd: #### Loading Realms and Home Servers #### radiusd: #### Loading Clients #### client localhost { ipaddr = 127.0.0.1 require_message_authenticator = no secret = "testing123" nastype = "other" } client 10.0.0.0/24 { require_message_authenticator = no secret = "partapoint" shortname = "private-network-1" } radiusd: #### Instantiating modules #### instantiate { Module: Linked to module rlm_exec Module: Instantiating module "exec" from file /etc/raddb/modules/exec exec { wait = yes program = "/usr/local/bin/php5-3 -f /etc/raddb/php.php %{User-Name} %{User-Password}" input_pairs = "request" output_pairs = "reply" shell_escape = yes } Module: Linked to module rlm_expr Module: Instantiating module "expr" from file /etc/raddb/modules/expr Module: Linked to module rlm_expiration Module: Instantiating module "expiration" from file /etc/raddb/modules/expiration expiration { reply-message = "Password Has Expired " } Module: Linked to module rlm_logintime Module: Instantiating module "logintime" from file /etc/raddb/modules/logintime logintime { reply-message = "You are calling outside your allowed timespan " minimum-timeout = 60 } } radiusd: #### Loading Virtual Servers #### server { # from file /etc/raddb/radiusd.conf modules { Module: Creating Post-Auth-Type = REJECT Module: Checking authenticate {...} for more modules to load Module: Linked to module rlm_mschap Module: Instantiating module "mschap" from file /etc/raddb/modules/mschap mschap { use_mppe = yes require_encryption = no require_strong = no with_ntdomain_hack = no allow_retry = yes } Module: Checking authorize {...} for more modules to load Module: Linked to module rlm_detail Module: Instantiating module "auth_log" from file /etc/raddb/modules/detail.log detail auth_log { detailfile = "/var/log/radius/radacct/%{Client-IP-Address}/auth-detail-%Y%m%d" header = "%t" detailperm = 384 dirperm = 493 locking = no log_packet_header = no } Module: Linked to module rlm_files Module: Instantiating module "files" from file /etc/raddb/modules/files files { usersfile = "/etc/raddb/users" acctusersfile = "/etc/raddb/acct_users" preproxy_usersfile = "/etc/raddb/preproxy_users" compat = "no" } Module: Checking preacct {...} for more modules to load Module: Linked to module rlm_preprocess Module: Instantiating module "preprocess" from file /etc/raddb/modules/preprocess preprocess { huntgroups = "/etc/raddb/huntgroups" hints = "/etc/raddb/hints" with_ascend_hack = no ascend_channels_per_line = 23 with_ntdomain_hack = no with_specialix_jetstream_hack = no with_cisco_vsa_hack = no with_alvarion_vsa_hack = no } Module: Linked to module rlm_acct_unique Module: Instantiating module "acct_unique" from file /etc/raddb/modules/acct_unique acct_unique { key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port" } Module: Linked to module rlm_realm Module: Instantiating module "suffix" from file /etc/raddb/modules/realm realm suffix { format = "suffix" delimiter = "@" ignore_default = no ignore_null = no } Module: Checking accounting {...} for more modules to load Module: Instantiating module "detail" from file /etc/raddb/modules/detail detail { detailfile = "/var/log/radius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/detail-%Y%m%d" header = "%t" detailperm = 384 dirperm = 493 locking = no log_packet_header = no } Module: Linked to module rlm_unix Module: Instantiating module "unix" from file /etc/raddb/modules/unix unix { radwtmp = "/var/log/radius/radwtmp" } Module: Linked to module rlm_radutmp Module: Instantiating module "radutmp" from file /etc/raddb/modules/radutmp radutmp { filename = "/var/log/radius/radutmp" username = "%{User-Name}" case_sensitive = yes check_with_nas = yes perm = 384 callerid = yes } Module: Linked to module rlm_sql_log Module: Instantiating module "sql_log" from file /etc/raddb/modules/sql_log sql_log { path = "/var/log/radius/radacct/sql-relay" Post-Auth = "INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ('%{User-Name}', '%{User-Password:-Chap-Password}', '%{reply:Packet-Type}', '%S');" sql_user_name = "%{%{User-Name}:-DEFAULT}" utf8 = no safe-characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /" } Module: Linked to module rlm_attr_filter Module: Instantiating module "attr_filter.accounting_response" from file /etc/raddb/modules/attr_filter attr_filter attr_filter.accounting_response { attrsfile = "/etc/raddb/attrs.accounting_response" key = "%{User-Name}" relaxed = no } Module: Checking session {...} for more modules to load Module: Checking post-proxy {...} for more modules to load Module: Checking post-auth {...} for more modules to load Module: Instantiating module "reply_log" from file /etc/raddb/modules/detail.log detail reply_log { detailfile = "/var/log/radius/radacct/%{Client-IP-Address}/reply-detail-%Y%m%d" header = "%t" detailperm = 384 dirperm = 493 locking = no log_packet_header = no } Module: Instantiating module "attr_filter.access_reject" from file /etc/raddb/modules/attr_filter attr_filter attr_filter.access_reject { attrsfile = "/etc/raddb/attrs.access_reject" key = "%{User-Name}" relaxed = no } } # modules } # server server inner-tunnel { # from file /etc/raddb/sites-enabled/inner-tunnel modules { Module: Checking authenticate {...} for more modules to load Module: Linked to module rlm_pap Module: Instantiating module "pap" from file /etc/raddb/modules/pap pap { encryption_scheme = "auto" auto_header = no } Module: Linked to module rlm_chap Module: Instantiating module "chap" from file /etc/raddb/modules/chap Module: Linked to module rlm_eap Module: Instantiating module "eap" from file /etc/raddb/eap.conf eap { default_eap_type = "md5" timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = 4096 } Module: Linked to sub-module rlm_eap_md5 Module: Instantiating eap-md5 Module: Linked to sub-module rlm_eap_leap Module: Instantiating eap-leap Module: Linked to sub-module rlm_eap_gtc Module: Instantiating eap-gtc gtc { challenge = "Password: " auth_type = "PAP" } Module: Linked to sub-module rlm_eap_tls Module: Instantiating eap-tls tls { rsa_key_exchange = no dh_key_exchange = yes rsa_key_length = 512 dh_key_length = 512 verify_depth = 0 CA_path = "/etc/raddb/certs" pem_file_type = yes private_key_file = "/etc/raddb/certs/server.pem" certificate_file = "/etc/raddb/certs/server.pem" CA_file = "/etc/raddb/certs/ca.pem" private_key_password = "whatever" dh_file = "/etc/raddb/certs/dh" random_file = "/dev/urandom" fragment_size = 1024 include_length = yes check_crl = no cipher_list = "DEFAULT" make_cert_command = "/etc/raddb/certs/bootstrap" ecdh_curve = "prime256v1" cache { enable = no lifetime = 24 max_entries = 255 } verify { } ocsp { enable = no override_cert_url = yes url = "http://127.0.0.1/ocsp/" } } Module: Linked to sub-module rlm_eap_ttls Module: Instantiating eap-ttls ttls { default_eap_type = "md5" copy_request_to_tunnel = no use_tunneled_reply = no virtual_server = "inner-tunnel" include_length = yes } Module: Linked to sub-module rlm_eap_peap Module: Instantiating eap-peap peap { default_eap_type = "mschapv2" copy_request_to_tunnel = no use_tunneled_reply = no proxy_tunneled_request_as_eap = yes virtual_server = "inner-tunnel" soh = no } Module: Linked to sub-module rlm_eap_mschapv2 Module: Instantiating eap-mschapv2 mschapv2 { with_ntdomain_hack = no send_error = no } Module: Checking authorize {...} for more modules to load Module: Checking session {...} for more modules to load Module: Checking post-proxy {...} for more modules to load Module: Checking post-auth {...} for more modules to load } # modules } # server radiusd: #### Opening IP addresses and Ports #### listen { type = "auth" ipaddr = * port = 0 } listen { type = "acct" ipaddr = * port = 0 } listen { type = "control" listen { socket = "/var/run/radiusd/radiusd.sock" } } listen { type = "auth" ipaddr = 127.0.0.1 port = 18120 } Listening on authentication address * port 1812 Listening on accounting address * port 1813 Listening on command file /var/run/radiusd/radiusd.sock Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel Ready to process requests. rad_recv: Access-Request packet from host 10.0.0.2 port 2048, id=28, length=141 User-Name = "test" NAS-IP-Address = 10.0.0.2 NAS-Port = 0 Called-Station-Id = "00-1E-E5-21-25-58" Calling-Station-Id = "00-16-44-F9-E6-02" Framed-MTU = 1400 NAS-Port-Type = Wireless-802.11 Connect-Info = "CONNECT 11Mbps 802.11b" EAP-Message = 0x020100090174657374 Message-Authenticator = 0xc695aa1d11f4a5f93876c6f74e240f67 # Executing section authorize from file /etc/raddb/sites-enabled/default +- entering group authorize {...} [auth_log] expand: /var/log/radius/radacct/%{Client-IP-Address}/auth-detail-%Y%m%d -> /var/log/radius/radacct/10.0.0.2/auth-detail-20120920 [auth_log] /var/log/radius/radacct/%{Client-IP-Address}/auth-detail-%Y%m%d expands to /var/log/radius/radacct/10.0.0.2/auth-detail-20120920 [auth_log] expand: %t -> Thu Sep 20 17:25:00 2012 ++[auth_log] returns ok ++[mschap] returns noop [files] users: Matched entry DEFAULT at line 60 ++[files] returns ok ++[expiration] returns noop ++[logintime] returns noop [exec] expand: %{User-Name} -> test [exec] expand: %{User-Password} -> Exec-Program output: Access-Accept Exec-Program-Wait: plaintext: Access-Accept Exec-Program: returned: 0 ++[exec] returns ok Found Auth-Type = exec # Executing group from file /etc/raddb/sites-enabled/default +- entering group authenticate {...} [exec] expand: %{User-Name} -> test [exec] expand: %{User-Password} -> Exec-Program output: Access-Accept Exec-Program-Wait: plaintext: Access-Accept Exec-Program: returned: 0 ++[exec] returns ok Login OK: [test/<via Auth-Type = exec>] (from client private-network-1 port 0 cli 00-16-44-F9-E6-02) # Executing section post-auth from file /etc/raddb/sites-enabled/default +- entering group post-auth {...} [reply_log] expand: /var/log/radius/radacct/%{Client-IP-Address}/reply-detail-%Y%m%d -> /var/log/radius/radacct/10.0.0.2/reply-detail-20120920 [reply_log] /var/log/radius/radacct/%{Client-IP-Address}/reply-detail-%Y%m%d expands to /var/log/radius/radacct/10.0.0.2/reply-detail-20120920 [reply_log] expand: %t -> Thu Sep 20 17:25:00 2012 ++[reply_log] returns ok [sql_log] Processing sql_log_postauth [sql_log] expand: %{User-Name} -> test [sql_log] expand: %{%{User-Name}:-DEFAULT} -> test [sql_log] sql_set_user escaped user --> 'test' [sql_log] WARNING: Deprecated conditional expansion ":-". See "man unlang" for details [sql_log] ... expanding second conditional [sql_log] expand: Chap-Password -> Chap-Password [sql_log] expand: INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ('%{User-Name}', '%{User-Password:-Chap-Password}', '%{reply:Packet-Type}', '%S'); -> INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ('test', 'Chap-Password', 'Access-Accept', '2012-09-20 17:25:00'); [sql_log] expand: /var/log/radius/radacct/sql-relay -> /var/log/radius/radacct/sql-relay ++[sql_log] returns ok [exec] expand: %{User-Name} -> test [exec] expand: %{User-Password} -> Exec-Program output: Access-Accept Exec-Program-Wait: plaintext: Access-Accept Exec-Program: returned: 0 ++[exec] returns ok Sending Access-Accept of id 28 to 10.0.0.2 port 2048 Finished request 0. Going to the next request Waking up in 4.9 seconds. Cleaning up request 0 ID 28 with timestamp +7 Ready to process requests. script; <?php $user = getenv("USER_NAME"); $password = getenv("USER_PASSWORD"); echo "Access-Accept\n"; ?> exec module; exec { wait = yes program = "/usr/local/bin/php-5.3 /etc/raddb/php.php %{User-Name} %{User-Password}" input_pairs = request output_pairs = reply shell_escape = yes }
On 20/09/12 15:34, Tarık Kabak wrote:
rad_recv: Access-Request packet from host 10.0.0.2 port 2048, id=28, length=141 User-Name = "test" NAS-IP-Address = 10.0.0.2 NAS-Port = 0 Called-Station-Id = "00-1E-E5-21-25-58" Calling-Station-Id = "00-16-44-F9-E6-02" Framed-MTU = 1400 NAS-Port-Type = Wireless-802.11 Connect-Info = "CONNECT 11Mbps 802.11b" EAP-Message = 0x020100090174657374 Message-Authenticator = 0xc695aa1d11f4a5f93876c6f74e240f67
This is an EAP request. What you want to do is impossible. See here: http://deployingradius.com/documents/protocols/oracles.html You should consider a PHP script equivalent to "PAM". That is, a script that checks username/password can only work with PAP requests.
Tarık Kabak wrote:
we are trying to external php script to authenticate user pass. radius return access-accept to nas but client ask user pass again ...
Read scripts/exec-program-wait.
script;
<?php $user = getenv("USER_NAME"); $password = getenv("USER_PASSWORD");
echo "Access-Accept\n";
Huh? Why is that there?
?>
exec module;
exec { wait = yes program = "/usr/local/bin/php-5.3 /etc/raddb/php.php %{User-Name} %{User-Password}"
So... you're putting the password on the command line, and also using getenv() to get it? I would suggest clarifying how PHP works.
input_pairs = request output_pairs = reply shell_escape = yes }
Alan DeKok.
Hello again, Thanks for your help. So external script support is possible for only PAP? I wanted to authenticate windows 7 wireless interfaces via radius server cause of an old/non-supported sql db so i had to use my own external/customized php script. 2012/9/20 Alan DeKok <aland@deployingradius.com>
Tarık Kabak wrote:
we are trying to external php script to authenticate user pass. radius return access-accept to nas but client ask user pass again ...
Read scripts/exec-program-wait.
script;
<?php $user = getenv("USER_NAME"); $password = getenv("USER_PASSWORD");
echo "Access-Accept\n";
Huh? Why is that there?
?>
exec module;
exec { wait = yes program = "/usr/local/bin/php-5.3 /etc/raddb/php.php %{User-Name} %{User-Password}"
So... you're putting the password on the command line, and also using getenv() to get it?
I would suggest clarifying how PHP works.
input_pairs = request output_pairs = reply shell_escape = yes }
Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
On 20 Sep 2012, at 18:00, Tarık Kabak <tarikkabak@gmail.com> wrote:
Hello again,
Thanks for your help. So external script support is possible for only PAP? I wanted to authenticate windows 7 wireless interfaces via radius server cause of an old/non-supported sql db so i had to use my own external/customized php script.
you can do it, if your old unsupport database has the passwords available in cleartext, or the nt hashes of the passwords... -Arran
Hi Arran, Can you tell me please what is wrong with this php script below. Or is there any working example script? Note that this script is just for simplifying at all. Thanks. #!/usr/local/bin/php-5.3 <?php $f = fopen("php://stdin", "r"); while ($line = fgets($f)) { $line = trim($line); $fields = explode(' ', $line); $username = rawurldecode($fields[0]); $password = rawurldecode($fields[1]); if ($username == 'hello' and $password == 'world') { fwrite(STDOUT, "Access-Accept\n"); } else if ($username == 'foo' and $password == 'bar') { fwrite(STDOUT, "Access-Accept\n"); } else { fwrite(STDOUT, "Access-Reject\n"); } } ?> Connection is failed. (It asks for user/pass again) Here is output of radiusd -X command: Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel Ready to process requests. rad_recv: Access-Request packet from host 192.168.35.100 port 10587, id=5, length=144 User-Name = "foo" NAS-IP-Address = 192.168.35.100 NAS-Port = 0 Called-Station-Id = "74-EA-3A-AE-9E-FB:Radius" Calling-Station-Id = "C4-85-08-11-59-EA" Framed-MTU = 1400 NAS-Port-Type = Wireless-802.11 Connect-Info = "CONNECT 0Mbps 802.11" EAP-Message = 0x0201000801666f6f Message-Authenticator = 0x71d5d45adea35cdd7c4d6cbeb425b08d # Executing section authorize from file /etc/raddb/sites-enabled/default +- entering group authorize {...} [auth_log] expand: /var/log/radius/radacct/%{Client-IP-Address}/auth-detail-%Y%m%d -> /var/log/radius/radacct/192.168.35.100/auth-detail-20120920 [auth_log] /var/log/radius/radacct/%{Client-IP-Address}/auth-detail-%Y%m%d expands to /var/log/radius/radacct/192.168.35.100/auth-detail-20120920 [auth_log] expand: %t -> Thu Sep 20 22:39:07 2012 ++[auth_log] returns ok ++[mschap] returns noop [files] users: Matched entry DEFAULT at line 60 ++[files] returns ok ++[expiration] returns noop ++[logintime] returns noop Found Auth-Type = TEST # Executing group from file /etc/raddb/sites-enabled/default +- entering group TEST {...} [php] expand: %{mschap:User-Name} -> foo [php] expand: %{User-Password} -> Exec-Program output: Exec-Program-Wait: plaintext: Exec-Program: returned: 0 ++[php] returns ok Login OK: [foo/<via Auth-Type = TEST>] (from client myAp port 0 cli C4-85-08-11-59-EA) # Executing section post-auth from file /etc/raddb/sites-enabled/default +- entering group post-auth {...} [reply_log] expand: /var/log/radius/radacct/%{Client-IP-Address}/reply-detail-%Y%m%d -> /var/log/radius/radacct/192.168.35.100/reply-detail-20120920 [reply_log] /var/log/radius/radacct/%{Client-IP-Address}/reply-detail-%Y%m%d expands to /var/log/radius/radacct/192.168.35.100/reply-detail-20120920 [reply_log] expand: %t -> Thu Sep 20 22:39:07 2012 ++[reply_log] returns ok [sql_log] Processing sql_log_postauth [sql_log] expand: %{User-Name} -> foo [sql_log] expand: %{%{User-Name}:-DEFAULT} -> foo [sql_log] sql_set_user escaped user --> 'foo' [sql_log] WARNING: Deprecated conditional expansion ":-". See "man unlang" for details [sql_log] ... expanding second conditional [sql_log] expand: Chap-Password -> Chap-Password [sql_log] expand: INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ('%{User-Name}', '%{User-Password:-Chap-Password}', '%{reply:Packet-Type}', '%S'); -> INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ('foo', 'Chap-Password', 'Access-Accept', '2012-09-20 22:39:07'); [sql_log] expand: /var/log/radius/radacct/sql-relay -> /var/log/radius/radacct/sql-relay ++[sql_log] returns ok ++[exec] returns noop Sending Access-Accept of id 5 to 192.168.35.100 port 10587 Finished request 0. Going to the next request Waking up in 4.9 seconds. Cleaning up request 0 ID 5 with timestamp +9 Ready to process requests. 2012/9/20 Arran Cudbard-Bell <a.cudbardb@freeradius.org>
On 20 Sep 2012, at 18:00, Tarık Kabak <tarikkabak@gmail.com> wrote:
Hello again,
Thanks for your help. So external script support is possible for only PAP? I wanted to authenticate windows 7 wireless interfaces via radius server cause of an old/non-supported sql db so i had to use my own external/customized php script.
you can do it, if your old unsupport database has the passwords available in cleartext, or the nt hashes of the passwords...
-Arran - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Hi, On Thu, Sep 20, 2012 at 10:56:14PM +0300, Tarık Kabak wrote:
Connection is failed. (It asks for user/pass again) Here is output of radiusd -X command:
You need to read (again?) what Phil wrote. You're sending an EAP request, and replying with a simple Access-Accept. The NAS might try and let the client on the network, but the client won't complete the EAP process, and will disconnect. Then will likely ask for the password again, like you're seeing. If you do not have your passwords in clear text or NTLM hashes, you need to think again. Even if you do, using a PHP script with exec is probably the wrong way to do it. Matthew -- Matthew Newton, Ph.D. <mcn4@le.ac.uk> Systems Architect (UNIX and Networks), Network Services, I.T. Services, University of Leicester, Leicester LE1 7RH, United Kingdom For IT help contact helpdesk extn. 2253, <ithelp@le.ac.uk>
On 09/20/2012 08:56 PM, Tarık Kabak wrote:
Hi Arran,
Can you tell me please what is wrong with this php script below. Or is there any working example script?
What's "wrong" with the script is that what you want to do is impossible. EAP is a challenge-response authentication method. You can't just run a PHP script and get a username/password. As per my previous email, see here: http://deployingradius.com/documents/protocols/oracles.html ...and also here: http://deployingradius.com/documents/protocols/compatibility.html Read those pages until you understand them.
Note that this script is just for simplifying at all.
To repeat: what you want to do is impossible. The ONLY thing you can do is *if* you are using EAP-TTLS/PAP on the clients and *then* you can use a script, as follows: sites-enabled/inner-tunnel: authorize { ... if (User-Password) { # this is a PAP request, pass to our script update control { Auth-Type := myscript } } } authenticate { ... Auth-Type myscript { my_php_exec } } However, note that EAP-TTLS/PAP is not supported in Windows until Windows 8.
On Fri, Sep 21, 2012 at 3:24 AM, Phil Mayers <p.mayers@imperial.ac.uk> wrote:
The ONLY thing you can do is *if* you are using EAP-TTLS/PAP on the clients and *then* you can use a script, as follows:
sites-enabled/inner-tunnel:
authorize { ... if (User-Password) { # this is a PAP request, pass to our script update control { Auth-Type := myscript
Since the OP's script (the one he posted last anyway) checks something like "if ($password == 'bar')", I assume he has passwords in clear text, so it might be possibe to use something like authorize { ... update control { Cleartext-Password := "%{exec:/path/to/the/script args}" } ... } ... and then let the default pap/chap module handle the authorization. Of course it depends on whether or not the passwords are available as cleartext/nt-hash, and the script needs to be modified to print the password instead of "Access-Accept" like it does currently. -- Fajar
On 20/09/12 22:03, Fajar A. Nugraha wrote:
Since the OP's script (the one he posted last anyway) checks something like "if ($password == 'bar')", I assume he has passwords in clear text, so it might be possibe to use something like
He did say it was simplified but yes, if he has that, that's a good solution.
participants (6)
-
Alan DeKok -
Arran Cudbard-Bell -
Fajar A. Nugraha -
Matthew Newton -
Phil Mayers -
Tarık Kabak