Hello Bruno -
What you describe is the correct behaviour. There is nothing in the rfc's that state an access reject must be empty, and indeed there are lots of people who *want* to include reply items in access rejects for various reasons. You can either call a hook that executes before the AuthBy clause and do the reject there, or you can strip any reply attributes you don't want in the existing PostAuthHook. regards Hugh On Fri, 7 Jun 2002 04:03, Bruno Tiago Rodrigues wrote: > Hi guys > Here's something I've been worrying about for a while. As we were > braintorming a while ago, some of us figured this could be a bug/feature > instead of a programming issue. We managed to trim down the code to the > following testing lines. Our doubt is if should be this the correct > behaviour for > Radiator. .. > > AuthBySQL gets the user reply attributes and then a PostAuthHook is called > which simply denies the access to the user. Even so it denies the access, > all the attributes which were stored by the AuthBySQL query are still sent > back to the NAS... > > I used to work with a similar setup, using AuthByLDAP instead of AuthBySQL > and I don't remember seeing this happen anywhere... > > Any help? > > >>> this is the authentication only radius configuration file > > LogDir /export/home/bter/logs > DbDir /export/home/bter/cfg > PidFile %L/authentication.pid > LogFile %L/debug_auth.log > Trace 4 > AuthPort 1645 > AcctPort > DictionaryFile /usr/local/etc/dictionary > RewriteUsername s/[^a-zA-Z0-9.\$\-\@\_]//gx > > <Client DEFAULT> > Secret blashfoni > DupInterval 0 > </Client> > > <AuthBy SQL> > Identifier authdre > # Adjust DBSource, DBUsername, DBAuth to suit your DB > DBSource dbi:mysql:radius > DBUsername radius > DBAuth radrad > > # Let the user in if they have any time left, set > # the Session-timeout to the time left > AuthSelect select PASSWORD,LNSATTR from SUBSCRIBERS where > USERNAME=%0 > AuthColumnDef 0,User-Password,check > AuthColumnDef 1,GENERIC, reply > </AuthBy> > <Handler Service-Type="Outbound-User"> > AuthBy authdre > PostAuthHook file:"%D/PostVPDN.hook" > </Handler> > > <Handler User-Name=/\@/> > AuthBy authdre > PostAuthHook file:"%D/PostVPDN.hook" > </Handler> > > >>> now this is PostVPDN.hook > > sub > > > my $r = ${$_[0]}; #this is the request object > my $rp = ${$_[1]}; #this is the response object > my $result = ${$_[2]}; #this is the status of the authentication so > far > > my $stype = $r->get_attr('Service-Type'); > my $code = $r->code; > > > if ($code eq 'Access-Request') > > ${$_[2]} = $main::REJECT ; > ${$_[1]}->change_attr('Reply-Message' , 'no way, jose'); > return; > } > } > > >>> this is the "radpwtst -secret blashfoni -user bruno@testedre -password > > bruno -noacct -trace" output > > sending Access-Request... > Packet dump: > *** Sending to 127.0.0.1 port 1645 .... > Code: Access-Request > Identifier: 87 > Authentic: 1234567890123456 > Attributes: > User-Name = "bruno@testedre" > Service-Type = Framed-User > NAS-IP-Address = 203.63.154.1 > NAS-Port = 1234 > Called-Station-Id = "123456789" > Calling-Station-Id = "987654321" > NAS-Port-Type = Async > User-Password = "<224>8C<211><128><182><224>:=<198>I]" > > Packet dump: > *** Received from 127.0.0.1 port 1645 .... > Code: Access-Reject > Identifier: 87 > Authentic: <187><136><241>'<1>,<194><215>4<<9><199>= <22>S > Attributes: > cisco-avpair = "ip:addr-pool=ltwo" > cisco-avpair = "service=ppp" > Service-Type = Framed-User > Framed-Protocol = PPP > Reply-Message = "no way, jose" > Reply-Message = "Request Denied" > > Rejected: no way, jose > > >>> and this is the radius debug log: > > Thu Jun 6 18:36:39 2002: DEBUG: Packet dump: > *** Received from 127.0.0.1 port 45573 .... > Code: Access-Request > Identifier: 129 > Authentic: 1234567890123456 > Attributes: > User-Name = "bruno@testedre" > Service-Type = Framed-User > NAS-IP-Address = 203.63.154.1 > NAS-Port = 1234 > Called-Station-Id = "123456789" > Calling-Station-Id = "987654321" > NAS-Port-Type = Async > User-Password = "<224>8C<211><128><182><224>:=<198>I]" > > Thu Jun 6 18:36:39 2002: DEBUG: Rewrote user name to bruno@testedre > Thu Jun 6 18:36:39 2002: DEBUG: Handling request with Handler > 'User-Name=/\@/' > Thu Jun 6 18:36:39 2002: DEBUG: Deleting session for bruno@testedre, > 203.63.154.1, 1234 > Thu Jun 6 18:36:39 2002: DEBUG: Handling with Radius::AuthSQL > Thu Jun 6 18:36:39 2002: DEBUG: Handling with Radius::AuthSQL: authdre > Thu Jun 6 18:36:39 2002: DEBUG: Query is: select PASSWORD,LNSATTR from > SUBSCRIBERS where USERNAME='bruno@testedre' > > Thu Jun 6 18:36:39 2002: DEBUG: Radius::AuthSQL looks for match with > bruno@testedre > Thu Jun 6 18:36:39 2002: DEBUG: Radius::AuthSQL ACCEPT: > Thu Jun 6 18:36:39 2002: INFO: Access rejected for bruno@testedre: > Thu Jun 6 18:36:39 2002: DEBUG: Packet dump: > *** Sending to 127.0.0.1 port 45573 .... > Code: Access-Reject > Identifier: 129 > Authentic: 1234567890123456 > Attributes: > cisco-avpair = "ip:addr-pool=ltwo" > cisco-avpair = "service=ppp" > Service-Type = Framed-User > Framed-Protocol = PPP > Reply-Message = "nepias" > Reply-Message = "Request Denied" > > > === > Archive at http://www.open.com.au/archives/radiator/ > Announcements on [EMAIL PROTECTED] > To unsubscribe, email '[EMAIL PROTECTED]' with > 'unsubscribe radiator' in the body of the message. -- Radiator: the most portable, flexible and configurable RADIUS server anywhere. Available on *NIX, *BSD, Windows 95/98/2000, NT, MacOS X. - Nets: internetwork inventory and management - graphical, extensible, flexible with hardware, software, platform and database independence. === Archive at http://www.open.com.au/archives/radiator/ Announcements on [EMAIL PROTECTED] To unsubscribe, email '[EMAIL PROTECTED]' with 'unsubscribe radiator' in the body of the message.