[RADIATOR] AcctInsertQuery for Authby RADIUS
Michael
ringo at vianet.ca
Fri Feb 18 21:53:19 CST 2011
hmm.. ya, it looks like the AuthBy SQL is being called, but not executing the
insert statment.
i seem to remember running into this before. I remember something about how
radiator didn't execute the insert statement unless a AccountingTable value was
configured, or maybe AcctColumnDef.
So, try adding this even though it's not needed since your sql insert statment
has the table name:
AccountingTable radiator_insert_accounting
..and also try configuring an AcctColumnDef:
AcctColumnDef invalid,invalid
This AcctColumnDef of course wont work, but just see what it does in your debug.
Michael
On Sat, 19 Feb 2011, Jeffrey Lee wrote:
> here's the debug log... i execute radpwtst -user jeff at abc -password ****
>
>
>
> Sat Feb 19 11:09:47 2011: DEBUG: Packet dump:
> *** Received from 127.0.0.1 port 56818 ....
> Code: Access-Request
> Identifier: 2
> Authentic: <149>G<148><203>z<228>]<232><150><158><219><252><31><128>WP
> Attributes:
> User-Name = "jeff at abc"
> Service-Type = Framed-User
> NAS-IP-Address = 203.63.154.1
> NAS-Identifier = "203.63.154.1"
> NAS-Port = 1234
> Called-Station-Id = "123456789"
> Calling-Station-Id = "987654321"
> NAS-Port-Type = Async
> User-Password = <22>]<179><134><136><216><235>Y<253><238>+<30><161><249>
> a<235>
>
> Sat Feb 19 11:09:47 2011: DEBUG: Handling request with Handler 'Realm=abc', Iden
> tifier ''
> Sat Feb 19 11:09:47 2011: DEBUG: Rewrote user name to jeff
> Sat Feb 19 11:09:47 2011: DEBUG: Deleting session for jeff at abc, 203.63.154.1, 1
> 234
> Sat Feb 19 11:09:47 2011: DEBUG: Handling with Radius::AuthSQL:
> Sat Feb 19 11:09:47 2011: DEBUG: AuthBy SQL result: IGNORE, Ignored due to Ignor
> eAuthentication
> Sat Feb 19 11:09:47 2011: DEBUG: Handling with Radius::AuthRADIUS
> Sat Feb 19 11:09:47 2011: DEBUG: AuthBy RADIUS creates new local socket '0.0.0.0
> :0' for sending requests
> Sat Feb 19 11:09:47 2011: DEBUG: Packet dump:
> *** Sending to 192.168.10.103 port 1812 ....
> Code: Access-Request
> Identifier: 1
> Authentic: <149>G<148><203>z<228>]<232><150><158><219><252><31><128>WP
> Attributes:
> User-Name = "jeff"
> Service-Type = Framed-User
> NAS-IP-Address = 203.63.154.1
> NAS-Identifier = "203.63.154.1"
> NAS-Port = 1234
> Called-Station-Id = "123456789"
> Calling-Station-Id = "987654321"
> NAS-Port-Type = Async
> User-Password = <22>]<179><134><136><216><235>Y<253><238>+<30><161><249>
> a<235>
>
> Sat Feb 19 11:09:47 2011: DEBUG: AuthBy RADIUS result: IGNORE,
> Sat Feb 19 11:09:47 2011: DEBUG: Received reply in AuthRADIUS for req 1 from 192
> .168.10.103:1812
> Sat Feb 19 11:09:47 2011: DEBUG: Packet dump:
> *** Received from 192.168.10.103 port 1812 ....
> Code: Access-Accept
> Identifier: 1
> Authentic: 1<234><130><212>=p<140><200><128><199><228><139>c<1><<148>
> Attributes:
> Class = "<233><183>d=9<191><185>]<23><236>"Gl<249>"Z"
>
> Sat Feb 19 11:09:47 2011: DEBUG: Access accepted for jeff
> Sat Feb 19 11:09:47 2011: DEBUG: do query is: 'INSERT INTO SuccessfulRequests(Re
> alm, UserName, Password, NASIPAddress, ReplyMessage, CallerID) values('', 'jeff'
> , 'meyf', '203.63.154.1', '', '987654321')':
> Sat Feb 19 11:09:48 2011: DEBUG: Packet dump:
> *** Sending to 127.0.0.1 port 56818 ....
> Code: Access-Accept
> Identifier: 2
> Authentic: "R<245><11><194>%<230><147>T<153><171><31><251><175>K<200>
> Attributes:
> Class = "<233><183>d=9<191><185>]<23><236>"Gl<249>"Z"
>
> Sat Feb 19 11:09:48 2011: DEBUG: Packet dump:
> *** Received from 127.0.0.1 port 56818 ....
> Code: Accounting-Request
> Identifier: 3
> Authentic: <194><140><153><14>v<154><210> <227><204>;v7<148>(<172>
> Attributes:
> User-Name = "jeff at abc"
> Service-Type = Framed-User
> NAS-IP-Address = 203.63.154.1
> NAS-Identifier = "203.63.154.1"
> NAS-Port = 1234
> NAS-Port-Type = Async
> Acct-Session-Id = "00001234"
> Acct-Status-Type = Start
> Called-Station-Id = "123456789"
> Calling-Station-Id = "987654321"
> Acct-Delay-Time = 0
> Class = "<233><183>d=9<191><185>]<23><236>"Gl<249>"Z"
>
> Sat Feb 19 11:09:48 2011: DEBUG: Handling request with Handler 'Realm=abc', Iden
> tifier ''
> Sat Feb 19 11:09:48 2011: DEBUG: Rewrote user name to jeff
> Sat Feb 19 11:09:48 2011: DEBUG: Adding session for jeff at abc, 203.63.154.1, 123
> 4
> Sat Feb 19 11:09:48 2011: DEBUG: Handling with Radius::AuthSQL:
> Sat Feb 19 11:09:48 2011: DEBUG: Handling accounting with Radius::AuthSQL
> Sat Feb 19 11:09:48 2011: DEBUG: AuthBy SQL result: ACCEPT,
> Sat Feb 19 11:09:48 2011: DEBUG: Accounting accepted
> Sat Feb 19 11:09:48 2011: DEBUG: Packet dump:
> *** Sending to 127.0.0.1 port 56818 ....
> Code: Accounting-Response
> Identifier: 3
> Authentic: <5><215><174><207>cco+<206><29>T<227><170><221><214><141>
> Attributes:
>
> Sat Feb 19 11:09:48 2011: DEBUG: Packet dump:
> *** Received from 127.0.0.1 port 56818 ....
> Code: Accounting-Request
> Identifier: 4
> Authentic: K=<18>v<202><162><138>^<216>6#<9><211>5<176><7>
> Attributes:
> User-Name = "jeff at abc"
> Service-Type = Framed-User
> NAS-IP-Address = 203.63.154.1
> NAS-Identifier = "203.63.154.1"
> NAS-Port = 1234
> NAS-Port-Type = Async
> Acct-Session-Id = "00001234"
> Acct-Status-Type = Stop
> Called-Station-Id = "123456789"
> Calling-Station-Id = "987654321"
> Acct-Delay-Time = 0
> Acct-Session-Time = 1000
> Acct-Input-Octets = 20000
> Acct-Output-Octets = 30000
> Class = "<233><183>d=9<191><185>]<23><236>"Gl<249>"Z"
>
> Sat Feb 19 11:09:48 2011: DEBUG: Handling request with Handler 'Realm=abc', Iden
> tifier ''
> Sat Feb 19 11:09:48 2011: DEBUG: Rewrote user name to jeff
> Sat Feb 19 11:09:48 2011: DEBUG: Deleting session for jeff at abc, 203.63.154.1, 1
> 234
> Sat Feb 19 11:09:48 2011: DEBUG: Handling with Radius::AuthSQL:
> Sat Feb 19 11:09:48 2011: DEBUG: Handling accounting with Radius::AuthSQL
> Sat Feb 19 11:09:48 2011: DEBUG: AuthBy SQL result: ACCEPT,
> Sat Feb 19 11:09:48 2011: DEBUG: Accounting accepted
> Sat Feb 19 11:09:48 2011: DEBUG: Packet dump:
> *** Sending to 127.0.0.1 port 56818 ....
> Code: Accounting-Response
> Identifier: 4
> Authentic: <27><234><181><129><170><206>.y<146><166>WW<218><250><188><190>
> Attributes:
>
>
>
>
>
> There's another problem I see.... when I duplicated the <Handler>
> config and rename the realm to def, then I test authentication
> again.... the realm=def could not be found. this is another issue...
>
>
>
>
>
> On Sat, Feb 19, 2011 at 2:26 AM, Michael <ringo at vianet.ca> wrote:
>> was there even an accounting record sent? there's not enough debug here to
>> show what type of request this was, and it's only one, if there was an auth
>> request and a accounting request, there should be at least two requests in
>> your debug.
>>
>> I think you'd need to show the list more debug.
>>
>> Michael
>>
>>
>> On 11-02-17 08:25 PM, Jeffrey Lee wrote:
>>>
>>> see below for the<Handler> config
>>>
>>> i have 2 RADIUS server setup here.... RADIUS A is this radiator,
>>> RADIUS B is another RADIUS for testing proxy-realms.
>>> On RADIUS A, here's the output on screen:
>>>
>>> Fri Feb 18 12:18:18 2011: DEBUG: Handling request with Handler
>>> 'Realm=ABC', Identifier ''
>>> Fri Feb 18 12:18:18 2011: DEBUG: Rewrote user name to jeff
>>> Fri Feb 18 12:18:18 2011: DEBUG: Adding session for jeff at ABC,
>>> 203.63.154.1,1234
>>> Fri Feb 18 12:18:18 2011: DEBUG: Handling with Radius::AuthSQL:
>>> Fri Feb 18 12:18:18 2011: DEBUG: Handling accounting with Radius::AuthSQL
>>> Fri Feb 18 12:18:18 2011: DEBUG: AuthBy SQL result: ACCEPT,
>>> Fri Feb 18 12:18:18 2011: DEBUG: Accounting accepted
>>>
>>> >> it seems as though the AcctInsertQuery was called but there's
>>> no accounting record captured. if the stored procedure generated an
>>> error, will radiator capture and display the error message on screen?
>>>
>>>
>>> On RADIUS B, it seems that the proxy-forwarded authentication requests
>>> is received but not the accounting requests.
>>>
>>>
>>> On the database (configured for radiator), there are no accounting
>>> records captured, and the sessiondatabase is not triggered.
>>>
>>>
>>> ... what is wrong with the config?
>>>
>>>
>>>
>>>
>>> #########################################################################################################
>>>
>>> <Handler Realm=ABC>
>>> AcctLogFileName %D/detail
>>> AuthByPolicy ContinueWhileIgnore
>>> RewriteUsername s/^([^@]+).*/$1/
>>> MaxSessions 1
>>>
>>> <AuthBy SQL>
>>> IgnoreAuthentication
>>> HandleAcctStatusTypes Start,Stop,Alive
>>>
>>> # i've created a database called radiator with username and
>>> password
>>> as radiator
>>> DBAuth radiator
>>> DBSource dbi:ODBC:radiator
>>> DBUsername radiator
>>>
>>> # i'm using a sql server stored procedure to capture the
>>> accounting records
>>> AcctInsertQuery exec radiator_insert_accounting
>>> '%{User-Name}',
>>> '%{Acct-Session-Id}', '%{Acct-Session-Time}', '%{Acct-Input-Octets}',
>>> '%{Acct-Output-Octets}', '%{Framed-IP-Address}',
>>> '%{Calling-Station-Id}', '%{Called-Station-Id}', '%{NAS-Identifier}',
>>> '%{NAS-IP-Address}', '%{NAS-Port}', '', '%{Acct-Status-Type}',
>>> '%{Acct-Terminate-Cause}', '%R'
>>> </AuthBy>
>>>
>>> <AuthBy RADIUS>
>>> AcctPort 1813
>>> AuthPort 1812
>>> CacheOnNoReply 1
>>> CachePasswordExpiry 86400
>>> LocalAddress 0.0.0.0
>>> MaxFailedGraceTime 0
>>> MaxFailedRequests 1
>>> OutPort 0
>>> PasswordPrompt password
>>> Retries 3
>>> RetryTimeout 5
>>> Secret mysecret
>>>
>>> <Host 192.168.10.103>
>>> AcctPort 1813
>>> AuthPort 1812
>>> BogoMips 1
>>> LocalAddress 0.0.0.0
>>> MaxFailedGraceTime 0
>>> MaxFailedRequests 1
>>> OutPort 0
>>> Retries 3
>>> RetryTimeout 15
>>> Secret mysecret
>>> </Host>
>>> </AuthBy>
>>>
>>> # all success/failed requests logs are captured
>>> <AuthLog SQL>
>>> DBAuth radiator
>>> DBSource dbi:ODBC:radiator
>>> DBUsername radiator
>>>
>>> LogSuccess 1
>>> SuccessQuery insert into radpostauth (user,pass,reply)
>>> values(%2,%3,'Access-Accept')
>>>
>>> LogFailure 1
>>> FailureQuery insert into radpostauth (user,pass,reply)
>>> values(%2,%3,'Access-Reject')
>>> </AuthLog>
>>> </Handler>
>>>
>>>
>>> #########################################################################################################
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Thu, Feb 17, 2011 at 10:49 AM, Hugh Irvine<hugh at open.com.au> wrote:
>>>>
>>>> Hello Jeff -
>>>>
>>>> You should not mix Handlers and Realms in the same configuration file, as
>>>> Realms are always evaluated before Handlers.
>>>>
>>>> If you are going to change from Realms to Handlers, I suggest you use
>>>> separate Handlers for authentication and accounting:
>>>>
>>>>
..
>>>>
>>>> # accounting
>>>>
>>>> <Handler Request-Type = Accounting-Request, User-Name = /..../>
>>>>
>>>>
>>>>
>>>> </Handler>
>>>>
>>>> # authentication
>>>>
>>>> <Handler User-Name = /.../>
>>>>
>>>>
..
>>>>
>>>> </Handler>
>>>>
>>>>
..
>>>>
>>>> FYI - I also suggest you use "User-Name = /.../" instead of "Realm =
>>>> /..../" as you then have greater control with the regexp.
>>>>
>>>> regards
>>>>
>>>> Hugh
>>>>
>>>>
>>>> On 17 Feb 2011, at 10:03, Jeffrey Lee wrote:
>>>>
>>>>> hi Christian, thanks for the suggestion. You're right, your suggestion
>>>>> is the simplest to implement, neat and easy to maintain.
>>>>> whilst, the method suggested by Michael and Remo allows the AuthBy to
>>>>> be reused by other realms that need the same processing policy.
>>>>>
>>>>> if i have a handler/realm tag that uses regex?
>>>>> for example, i have<Realm ^abc(def)?\//i> (which should process any
>>>>> incoming requests with abc/user or abcdef/user, how will this appear
>>>>> in the handler tag? will it be<Handler realm=^abc(def)?\//i> , or
>>>>> this is not possible and it must be for specific matches?
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Feb 17, 2011 at 8:39 AM, Christian Kratzer<ck at cksoft.de> wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> On Wed, 16 Feb 2011, Jeffrey Lee wrote:
>>>>>>
>>>>>>> I tried adding<AuthBy SQL> after<AuthBy RADIUS> but as soon as
>>>>>>> <AuthBy RADIUS> is executed,<AuthBy SQL> will not be executed.
>>>>>>
>>>>>> <AuthBy RADIUS> will always return an ignore as it dispatches the
>>>>>> radius request and processes the answer asyncronously.
>>>>>>
>>>>>>> Can you actually place<AuthBy SQL> within a<AuthBy RADIUS>?
>>>>>>
>>>>>> You can place both AuthBy below each other inside the handler
>>>>>> and set the appropriate AuthByPolicy (Manual Section 5.24.1) to do
>>>>>> what you want.
>>>>>>
>>>>>> You will not need an AuthBy GROUP for a simple case as a Handler
>>>>>> already
>>>>>> implements the same functionality as an AuthBy GROUP.
>>>>>>
>>>>>>> What I'm trying to achieve is to log the RADIUS accounting records
>>>>>>> locally (start, stop& alive) for realms that need to be authenticated
>>>>>>> by another RADIUS server. How can I achieve that?
>>>>>>
>>>>>> something like this should do the trick:
>>>>>>
>>>>>> <Handler Realm=foo>
>>>>>> AuthByPolicy ContinueWhileIgnore
>>>>>>
>>>>>> <AuthBy RADIUS>
>>>>>> ...
>>>>>> </AuthBy>
>>>>>>
>>>>>> <AuthBy SQL>
>>>>>> IgnoreAuthentication
>>>>>> ...
>>>>>> </AuthBy>
>>>>>>
>>>>>> </Handler>
>>>>>>
>>>>>> The<AuthBy RADIUS> will always proxy your requests and will return
>>>>>> ignore.
>>>>>>
>>>>>> The AuthBy SQL will be called but will only handle accounting as you
>>>>>> have
>>>>>> configured IgnoreAuthentication.
>>>>>>
>>>>>> There are many possible variations but I think above is the simplest.
>>>>>>
>>>>>> Greetings
>>>>>> Christian
>>>>>>
>>>>>> --
>>>>>> Christian Kratzer CK Software GmbH
>>>>>> Email: ck at cksoft.de Wildberger Weg 24/2
>>>>>> Phone: +49 7032 893 997 - 0 D-71126 Gaeufelden
>>>>>> Fax: +49 7032 893 997 - 9 HRB 245288, Amtsgericht
>>>>>> Stuttgart
>>>>>> Web: http://www.cksoft.de/ Geschaeftsfuehrer: Christian
>>>>>> Kratzer
>>>>>>
>>>>> _______________________________________________
>>>>> radiator mailing list
>>>>> radiator at open.com.au
>>>>> http://www.open.com.au/mailman/listinfo/radiator
>>>>
>>>>
>>> _______________________________________________
>>> radiator mailing list
>>> radiator at open.com.au
>>> http://www.open.com.au/mailman/listinfo/radiator
>>>
>>>
>>
>
More information about the radiator
mailing list