<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'><div dir='ltr'>
<br>As I said only "authorize" sub is being called when receiving a REQUEST and not authenticate sub.<br>So I need to change Auth-Type to be Perl?<br><br>Here is my subs in the example.pl:<br><br>sub authorize {<br> print "TEST1\n";<br> # For debugging purposes only<br># &log_request_attributes;<br><br> # Here's where your authorization code comes<br> # You can call another function from here:<br> #&test_call;<br><br> return RLM_MODULE_OK;<br>}<br><br># Function to handle authenticate<br>sub authenticate {<br> print "TEST2\n";<br> # For debugging purposes only<br># &log_request_attributes;<br><br> if ($RAD_REQUEST{'User-Name'} =~ /^baduser/i) {<br> # Reject user and tell him why<br> $RAD_REPLY{'Reply-Message'} = "Denied access by rlm_perl function";<br> return RLM_MODULE_REJECT;<br> } else {<br> # Accept user and set some attribute<br> $RAD_REPLY{'h323-credit-amount'} = "100";<br> return RLM_MODULE_OK;<br> }<br>}<br><br><br>and my debug:<br><br>FreeRADIUS Version 2.1.11, for host x86_64-unknown-linux-gnu, built on Sep 29 2011 at 14:33:46<br>Copyright (C) 1999-2009 The FreeRADIUS server project and contributors. <br>There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A <br>PARTICULAR PURPOSE. <br>You may redistribute copies of FreeRADIUS under the terms of the <br>GNU General Public License v2. <br>Starting - reading configuration files ...<br>including configuration file /usr/local/etc/raddb/radiusd.conf<br>including configuration file /usr/local/etc/raddb/proxy.conf<br>including configuration file /usr/local/etc/raddb/clients.conf<br>including files in directory /usr/local/etc/raddb/modules/<br>including configuration file /usr/local/etc/raddb/modules/sradutmp<br>including configuration file /usr/local/etc/raddb/modules/mac2vlan<br>including configuration file /usr/local/etc/raddb/modules/passwd<br>including configuration file /usr/local/etc/raddb/modules/counter<br>including configuration file /usr/local/etc/raddb/modules/smsotp<br>including configuration file /usr/local/etc/raddb/modules/policy<br>including configuration file /usr/local/etc/raddb/modules/detail<br>including configuration file /usr/local/etc/raddb/modules/expr<br>including configuration file /usr/local/etc/raddb/modules/echo<br>including configuration file /usr/local/etc/raddb/modules/perl<br>including configuration file /usr/local/etc/raddb/modules/mac2ip<br>including configuration file /usr/local/etc/raddb/modules/detail.example.com<br>including configuration file /usr/local/etc/raddb/modules/preprocess<br>including configuration file /usr/local/etc/raddb/modules/radutmp<br>including configuration file /usr/local/etc/raddb/modules/unix<br>including configuration file /usr/local/etc/raddb/modules/redis<br>including configuration file /usr/local/etc/raddb/modules/pam<br>including configuration file /usr/local/etc/raddb/modules/checkval<br>including configuration file /usr/local/etc/raddb/modules/detail.log<br>including configuration file /usr/local/etc/raddb/modules/smbpasswd<br>including configuration file /usr/local/etc/raddb/modules/cui<br>including configuration file /usr/local/etc/raddb/modules/rediswho<br>including configuration file /usr/local/etc/raddb/modules/ippool<br>including configuration file /usr/local/etc/raddb/modules/realm<br>including configuration file /usr/local/etc/raddb/modules/always<br>including configuration file /usr/local/etc/raddb/modules/inner-eap<br>including configuration file /usr/local/etc/raddb/modules/chap<br>including configuration file /usr/local/etc/raddb/modules/wimax<br>including configuration file /usr/local/etc/raddb/modules/expiration<br>including configuration file /usr/local/etc/raddb/modules/ldap<br>including configuration file /usr/local/etc/raddb/modules/attr_rewrite<br>including configuration file /usr/local/etc/raddb/modules/linelog<br>including configuration file /usr/local/etc/raddb/modules/logintime<br>including configuration file /usr/local/etc/raddb/modules/digest<br>including configuration file /usr/local/etc/raddb/modules/mschap<br>including configuration file /usr/local/etc/raddb/modules/files<br>including configuration file /usr/local/etc/raddb/modules/sqlcounter_expire_on_login<br>including configuration file /usr/local/etc/raddb/modules/attr_filter<br>including configuration file /usr/local/etc/raddb/modules/exec<br>including configuration file /usr/local/etc/raddb/modules/otp<br>including configuration file /usr/local/etc/raddb/modules/acct_unique<br>including configuration file /usr/local/etc/raddb/modules/replicate<br>including configuration file /usr/local/etc/raddb/modules/sql_log<br>including configuration file /usr/local/etc/raddb/modules/pap<br>including configuration file /usr/local/etc/raddb/modules/opendirectory<br>including configuration file /usr/local/etc/raddb/modules/ntlm_auth<br>including configuration file /usr/local/etc/raddb/modules/soh<br>including configuration file /usr/local/etc/raddb/modules/etc_group<br>including configuration file /usr/local/etc/raddb/modules/dynamic_clients<br>including configuration file /usr/local/etc/raddb/modules/krb5<br>including configuration file /usr/local/etc/raddb/eap.conf<br>including configuration file /usr/local/etc/raddb/policy.conf<br>including files in directory /usr/local/etc/raddb/sites-enabled/<br>including configuration file /usr/local/etc/raddb/sites-enabled/inner-tunnel<br>including configuration file /usr/local/etc/raddb/sites-enabled/default<br>including configuration file /usr/local/etc/raddb/sites-enabled/control-socket<br>including configuration file /usr/local/etc/raddb/sites-enabled/default.orig<br>main {<br> allow_core_dumps = no<br>}<br>including dictionary file /usr/local/etc/raddb/dictionary<br>main {<br> name = "radiusd"<br> prefix = "/usr/local"<br> localstatedir = "/usr/local/var"<br> sbindir = "/usr/local/sbin"<br> logdir = "/usr/local/var/log/radius"<br> run_dir = "/usr/local/var/run/radiusd"<br> libdir = "/usr/local/lib"<br> radacctdir = "/usr/local/var/log/radius/radacct"<br> hostname_lookups = no<br> max_request_time = 30<br> cleanup_delay = 5<br> max_requests = 1024<br> pidfile = "/usr/local/var/run/radiusd/radiusd.pid"<br> checkrad = "/usr/local/sbin/checkrad"<br> debug_level = 0<br> proxy_requests = yes<br> log {<br> stripped_names = no<br> auth = no<br> auth_badpass = no<br> auth_goodpass = no<br> }<br> security {<br> max_attributes = 200<br> reject_delay = 1<br> status_server = yes<br> }<br>}<br>radiusd: #### Loading Realms and Home Servers ####<br> proxy server {<br> retry_delay = 5<br> retry_count = 3<br> default_fallback = no<br> dead_time = 120<br> wake_all_if_all_dead = no<br> }<br> home_server localhost {<br> ipaddr = 127.0.0.1<br> port = 1812<br> type = "auth"<br> secret = "testing123"<br> response_window = 20<br> max_outstanding = 65536<br> require_message_authenticator = yes<br> zombie_period = 40<br> status_check = "status-server"<br> ping_interval = 30<br> check_interval = 30<br> num_answers_to_alive = 3<br> num_pings_to_alive = 3<br> revive_interval = 120<br> status_check_timeout = 4<br> coa {<br> irt = 2<br> mrt = 16<br> mrc = 5<br> mrd = 30<br> }<br> }<br> home_server_pool my_auth_failover {<br> type = fail-over<br> home_server = localhost<br> }<br> realm example.com {<br> auth_pool = my_auth_failover<br> }<br> realm LOCAL {<br> }<br>radiusd: #### Loading Clients ####<br> client localhost {<br> ipaddr = 127.0.0.1<br> require_message_authenticator = no<br> secret = "testing123"<br> nastype = "other"<br> }<br> client 10.0.0.31 {<br> require_message_authenticator = no<br> secret = "testing123"<br> shortname = "ba20-seansdesk"<br> }<br>radiusd: #### Instantiating modules ####<br> instantiate {<br> Module: Linked to module rlm_exec<br> Module: Instantiating module "exec" from file /usr/local/etc/raddb/modules/exec<br> exec {<br> wait = no<br> input_pairs = "request"<br> shell_escape = yes<br> }<br> Module: Linked to module rlm_expr<br> Module: Instantiating module "expr" from file /usr/local/etc/raddb/modules/expr<br> Module: Linked to module rlm_expiration<br> Module: Instantiating module "expiration" from file /usr/local/etc/raddb/modules/expiration<br> expiration {<br> reply-message = "Password Has Expired "<br> }<br> Module: Linked to module rlm_logintime<br> Module: Instantiating module "logintime" from file /usr/local/etc/raddb/modules/logintime<br> logintime {<br> reply-message = "You are calling outside your allowed timespan "<br> minimum-timeout = 60<br> }<br> }<br>radiusd: #### Loading Virtual Servers ####<br>server { # from file /usr/local/etc/raddb/radiusd.conf<br> modules {<br> Module: Checking authenticate {...} for more modules to load<br> Module: Linked to module rlm_pap<br> Module: Instantiating module "pap" from file /usr/local/etc/raddb/modules/pap<br> pap {<br> encryption_scheme = "auto"<br> auto_header = no<br> }<br> Module: Linked to module rlm_chap<br> Module: Instantiating module "chap" from file /usr/local/etc/raddb/modules/chap<br> Module: Linked to module rlm_mschap<br> Module: Instantiating module "mschap" from file /usr/local/etc/raddb/modules/mschap<br> mschap {<br> use_mppe = yes<br> require_encryption = no<br> require_strong = no<br> with_ntdomain_hack = no<br> allow_retry = yes<br> }<br> Module: Linked to module rlm_digest<br> Module: Instantiating module "digest" from file /usr/local/etc/raddb/modules/digest<br> Module: Linked to module rlm_unix<br> Module: Instantiating module "unix" from file /usr/local/etc/raddb/modules/unix<br> unix {<br> radwtmp = "/usr/local/var/log/radius/radwtmp"<br> }<br> Module: Linked to module rlm_eap<br> Module: Instantiating module "eap" from file /usr/local/etc/raddb/eap.conf<br> eap {<br> default_eap_type = "md5"<br> timer_expire = 60<br> ignore_unknown_eap_types = no<br> cisco_accounting_username_bug = no<br> max_sessions = 4096<br> }<br> Module: Linked to sub-module rlm_eap_md5<br> Module: Instantiating eap-md5<br> Module: Linked to sub-module rlm_eap_leap<br> Module: Instantiating eap-leap<br> Module: Linked to sub-module rlm_eap_gtc<br> Module: Instantiating eap-gtc<br> gtc {<br> challenge = "Password: "<br> auth_type = "PAP"<br> }<br>Ignoring EAP-Type/tls because we do not have OpenSSL support.<br>Ignoring EAP-Type/ttls because we do not have OpenSSL support.<br>Ignoring EAP-Type/peap because we do not have OpenSSL support.<br> Module: Linked to sub-module rlm_eap_mschapv2<br> Module: Instantiating eap-mschapv2<br> mschapv2 {<br> with_ntdomain_hack = no<br> send_error = no<br> }<br> Module: Checking authorize {...} for more modules to load<br> Module: Linked to module rlm_preprocess<br> Module: Instantiating module "preprocess" from file /usr/local/etc/raddb/modules/preprocess<br> preprocess {<br> huntgroups = "/usr/local/etc/raddb/huntgroups"<br> hints = "/usr/local/etc/raddb/hints"<br> with_ascend_hack = no<br> ascend_channels_per_line = 23<br> with_ntdomain_hack = no<br> with_specialix_jetstream_hack = no<br> with_cisco_vsa_hack = no<br> with_alvarion_vsa_hack = no<br> }<br> Module: Linked to module rlm_realm<br> Module: Instantiating module "suffix" from file /usr/local/etc/raddb/modules/realm<br> realm suffix {<br> format = "suffix"<br> delimiter = "@"<br> ignore_default = no<br> ignore_null = no<br> }<br> Module: Linked to module rlm_files<br> Module: Instantiating module "files" from file /usr/local/etc/raddb/modules/files<br> files {<br> usersfile = "/usr/local/etc/raddb/users"<br> acctusersfile = "/usr/local/etc/raddb/acct_users"<br> preproxy_usersfile = "/usr/local/etc/raddb/preproxy_users"<br> compat = "no"<br> }<br> Module: Linked to module rlm_perl<br> Module: Instantiating module "perl" from file /usr/local/etc/raddb/modules/perl<br> perl {<br> module = "/usr/local/etc/raddb/example.pl"<br> func_authorize = "authorize"<br> func_authenticate = "authenticate"<br> func_accounting = "accounting"<br> func_preacct = "preacct"<br> func_checksimul = "checksimul"<br> func_detach = "detach"<br> func_xlat = "xlat"<br> func_pre_proxy = "pre_proxy"<br> func_post_proxy = "post_proxy"<br> func_post_auth = "post_auth"<br> func_recv_coa = "recv_coa"<br> func_send_coa = "send_coa"<br> }<br> Module: Checking preacct {...} for more modules to load<br> Module: Linked to module rlm_acct_unique<br> Module: Instantiating module "acct_unique" from file /usr/local/etc/raddb/modules/acct_unique<br> acct_unique {<br> key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port"<br> }<br> Module: Checking accounting {...} for more modules to load<br> Module: Linked to module rlm_detail<br> Module: Instantiating module "detail" from file /usr/local/etc/raddb/modules/detail<br> detail {<br> detailfile = "/usr/local/var/log/radius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/detail-%Y%m%d"<br> header = "%t"<br> detailperm = 384<br> dirperm = 493<br> locking = no<br> log_packet_header = no<br> }<br> Module: Linked to module rlm_radutmp<br> Module: Instantiating module "radutmp" from file /usr/local/etc/raddb/modules/radutmp<br> radutmp {<br> filename = "/usr/local/var/log/radius/radutmp"<br> username = "%{User-Name}"<br> case_sensitive = yes<br> check_with_nas = yes<br> perm = 384<br> callerid = yes<br> }<br> Module: Linked to module rlm_attr_filter<br> Module: Instantiating module "attr_filter.accounting_response" from file /usr/local/etc/raddb/modules/attr_filter<br> attr_filter attr_filter.accounting_response {<br> attrsfile = "/usr/local/etc/raddb/attrs.accounting_response"<br> key = "%{User-Name}"<br> }<br> Module: Checking session {...} for more modules to load<br> Module: Checking post-proxy {...} for more modules to load<br> Module: Checking post-auth {...} for more modules to load<br> Module: Instantiating module "attr_filter.access_reject" from file /usr/local/etc/raddb/modules/attr_filter<br> attr_filter attr_filter.access_reject {<br> attrsfile = "/usr/local/etc/raddb/attrs.access_reject"<br> key = "%{User-Name}"<br> }<br> } # modules<br>} # server<br>server inner-tunnel { # from file /usr/local/etc/raddb/sites-enabled/inner-tunnel<br> modules {<br> Module: Checking authenticate {...} for more modules to load<br> Module: Checking authorize {...} for more modules to load<br> Module: Checking session {...} for more modules to load<br> Module: Checking post-proxy {...} for more modules to load<br> Module: Checking post-auth {...} for more modules to load<br> } # modules<br>} # server<br>radiusd: #### Opening IP addresses and Ports ####<br>listen {<br> type = "auth"<br> ipaddr = *<br> port = 0<br>}<br>listen {<br> type = "acct"<br> ipaddr = *<br> port = 0<br>}<br>listen {<br> type = "control"<br> listen {<br> socket = "/usr/local/var/run/radiusd/radiusd.sock"<br> }<br>}<br>listen {<br> type = "auth"<br> ipaddr = 127.0.0.1<br> port = 18120<br>}<br> ... adding new socket proxy address * port 37985<br>Listening on authentication address * port 1812<br>Listening on accounting address * port 1813<br>Listening on command file /usr/local/var/run/radiusd/radiusd.sock<br>Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel<br>Listening on proxy address * port 1814<br>Ready to process requests.<br>rad_recv: Access-Request packet from host 10.0.0.31 port 50048, id=0, length=169<br> User-Name = "abc"<br> NAS-IP-Address = 10.0.0.31<br> NAS-Identifier = "belair"<br> NAS-Port = 0<br> Called-Station-Id = "00-0D-67-12-15-80:SSO_BelAir-PMIP-8021x"<br> Calling-Station-Id = "5C-59-48-F0-34-8B"<br> Framed-MTU = 1400<br> NAS-Port-Type = Wireless-802.11<br> Connect-Info = "CONNECT 11Mbps 802.11b"<br> EAP-Message = 0x0201000801616263<br> Message-Authenticator = 0xa2e58dedab542da76c4eee79810c39b5<br># Executing section authorize from file /usr/local/etc/raddb/sites-enabled/default<br>+- entering group authorize {...}<br>++[preprocess] returns ok<br>++[chap] returns noop<br>++[mschap] returns noop<br>++[digest] returns noop<br>[suffix] No '@' in User-Name = "abc", looking up realm NULL<br>[suffix] No such realm "NULL"<br>++[suffix] returns noop<br>[eap] EAP packet type response id 1 length 8<br>[eap] No EAP Start, assuming it's an on-going EAP conversation<br>++[eap] returns updated<br>++[files] returns noop<br>TEST1<br>rlm_perl: Added pair NAS-Port-Type = Wireless-802.11<br>rlm_perl: Added pair Calling-Station-Id = 5C-59-48-F0-34-8B<br>rlm_perl: Added pair Called-Station-Id = 00-0D-67-12-15-80:SSO_BelAir-PMIP-8021x<br>rlm_perl: Added pair Message-Authenticator = 0xa2e58dedab542da76c4eee79810c39b5<br>rlm_perl: Added pair User-Name = abc<br>rlm_perl: Added pair NAS-Identifier = belair<br>rlm_perl: Added pair EAP-Message = 0x0201000801616263<br>rlm_perl: Added pair Connect-Info = CONNECT 11Mbps 802.11b<br>rlm_perl: Added pair EAP-Type = Identity<br>rlm_perl: Added pair NAS-IP-Address = 10.0.0.31<br>rlm_perl: Added pair NAS-Port = 0<br>rlm_perl: Added pair Framed-MTU = 1400<br>rlm_perl: Added pair Auth-Type = EAP<br>++[perl] returns ok<br>++[expiration] returns noop<br>++[logintime] returns noop<br>[pap] WARNING! No "known good" password found for the user. Authentication may fail because of this.<br>++[pap] returns noop<br>Found Auth-Type = EAP<br># Executing group from file /usr/local/etc/raddb/sites-enabled/default<br>+- entering group authenticate {...}<br>[eap] EAP Identity<br>[eap] processing type md5<br>rlm_eap_md5: Issuing Challenge<br>++[eap] returns handled<br>Sending Access-Challenge of id 0 to 10.0.0.31 port 50048<br> EAP-Message = 0x01020016041085daaa0c236517bd9f949997a4b21116<br> Message-Authenticator = 0x00000000000000000000000000000000<br> State = 0x4d7c2e284d7e2aa8af457b378ff0710d<br>Finished request 0.<br>Going to the next request<br>Waking up in 4.9 seconds.<br>rad_recv: Access-Request packet from host 10.0.0.31 port 50048, id=1, length=185<br> User-Name = "abc"<br> NAS-IP-Address = 10.0.0.31<br> NAS-Identifier = "belair"<br> NAS-Port = 0<br> Called-Station-Id = "00-0D-67-12-15-80:SSO_BelAir-PMIP-8021x"<br> Calling-Station-Id = "5C-59-48-F0-34-8B"<br> Framed-MTU = 1400<br> NAS-Port-Type = Wireless-802.11<br> Connect-Info = "CONNECT 11Mbps 802.11b"<br> EAP-Message = 0x020200060319<br> State = 0x4d7c2e284d7e2aa8af457b378ff0710d<br> Message-Authenticator = 0xe61642a9563a4dedb0ec0dd31d5d7036<br># Executing section authorize from file /usr/local/etc/raddb/sites-enabled/default<br>+- entering group authorize {...}<br>++[preprocess] returns ok<br>++[chap] returns noop<br>++[mschap] returns noop<br>++[digest] returns noop<br>[suffix] No '@' in User-Name = "abc", looking up realm NULL<br>[suffix] No such realm "NULL"<br>++[suffix] returns noop<br>[eap] EAP packet type response id 2 length 6<br>[eap] No EAP Start, assuming it's an on-going EAP conversation<br>++[eap] returns updated<br>++[files] returns noop<br>TEST1<br>rlm_perl: Added pair NAS-Port-Type = Wireless-802.11<br>rlm_perl: Added pair State = 0x4d7c2e284d7e2aa8af457b378ff0710d<br>rlm_perl: Added pair Calling-Station-Id = 5C-59-48-F0-34-8B<br>rlm_perl: Added pair Called-Station-Id = 00-0D-67-12-15-80:SSO_BelAir-PMIP-8021x<br>rlm_perl: Added pair Message-Authenticator = 0xe61642a9563a4dedb0ec0dd31d5d7036<br>rlm_perl: Added pair User-Name = abc<br>rlm_perl: Added pair NAS-Identifier = belair<br>rlm_perl: Added pair EAP-Message = 0x020200060319<br>rlm_perl: Added pair Connect-Info = CONNECT 11Mbps 802.11b<br>rlm_perl: Added pair EAP-Type = NAK<br>rlm_perl: Added pair NAS-IP-Address = 10.0.0.31<br>rlm_perl: Added pair NAS-Port = 0<br>rlm_perl: Added pair Framed-MTU = 1400<br>rlm_perl: Added pair Auth-Type = EAP<br>++[perl] returns ok<br>++[expiration] returns noop<br>++[logintime] returns noop<br>[pap] WARNING! No "known good" password found for the user. Authentication may fail because of this.<br>++[pap] returns noop<br>Found Auth-Type = EAP<br># Executing group from file /usr/local/etc/raddb/sites-enabled/default<br>+- entering group authenticate {...}<br>[eap] Request found, released from the list<br>[eap] EAP NAK<br>[eap] NAK asked for unsupported type PEAP<br>[eap] No common EAP types found.<br>[eap] Failed in EAP select<br>++[eap] returns invalid<br>Failed to authenticate the user.<br>Using Post-Auth-Type Reject<br># Executing group from file /usr/local/etc/raddb/sites-enabled/default<br>+- entering group REJECT {...}<br>[attr_filter.access_reject] expand: %{User-Name} -> abc<br> attr_filter: Matched entry DEFAULT at line 11<br>++[attr_filter.access_reject] returns updated<br>Delaying reject of request 1 for 1 seconds<br>Going to the next request<br>Waking up in 0.9 seconds.<br>Sending delayed reject for request 1<br>Sending Access-Reject of id 1 to 10.0.0.31 port 50048<br> EAP-Message = 0x04020004<br> Message-Authenticator = 0x00000000000000000000000000000000<br>Waking up in 3.9 seconds.<br>Cleaning up request 0 ID 0 with timestamp +22<br>Waking up in 1.0 seconds.<br>Cleaning up request 1 ID 1 with timestamp +22<br>Ready to process requests.<br><br><br><br><br><br><div>> Date: Fri, 30 Sep 2011 20:20:29 +0100<br>> From: A.L.M.Buxey@lboro.ac.uk<br>> To: freeradius-users@lists.freeradius.org<br>> Subject: Re: "authentication" sub in perl<br>> <br>> Hi,<br>> <br>> debug?<br>> <br>> alan<br>> -<br>> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html<br></div> </div></body>
</html>