Hello Pavel -

Yes I see your point.

Unfortunately, AuthBy FILE doesn’t have a way to do this, unlike AuthBy SQL for 
example.

However, here is a simple way to do it:


<Handler>
        AuthByPolicy ContinueWhileAccept
        <AuthBy FILE>
                Filename %D/users.test1
        </AuthBy>
        <AuthBy GROUP>
                AddToRequest OSC-Group-Identifier = 
%{Reply:OSC-Group-Identifier}
                <AuthBy FILE>
                        Filename %D/users.test2
                </AuthBy>
        </AuthBy>
</Handler>


Here are the users files I tested with:


# users.test1

hugh Password=hugh
        OSC-Group-Identifier = something


# users.test2

DEFAULT OSC-Group-Identifier=something
        Reply-Message = GREAT


and here is the DEBUG output:


Radiator-4.27-1 % perl radpwtst -user hugh -password hugh -noacct   
              
sending Access-Request
4ff03830 Thu Feb  9 10:08:52 2023 354961: DEBUG: Packet dump:
4ff03830 *** Received from 127.0.0.1 port 58195 ....
4ff03830 Code:       Access-Request
4ff03830 Identifier: 174
4ff03830 Authentic:  RE&]<18><244>}V<187><227><128><248><247>NP<130>
4ff03830 Attributes:
4ff03830 User-Name = "hugh"
4ff03830 Service-Type = Framed-User
4ff03830 NAS-IP-Address = 203.63.154.1
4ff03830 NAS-Identifier = "203.63.154.1"
4ff03830 NAS-Port = 1234
4ff03830 Called-Station-Id = "123456789"
4ff03830 Calling-Station-Id = "987654321"
4ff03830 NAS-Port-Type = Async
4ff03830 User-Password = <162><243>5<150> <226>QY}u<209>b<168><30><153>5
4ff03830  4ff03830 Thu Feb  9 10:08:52 2023 355278: DEBUG: Handling request 
with Handler '', Identifier ''
4ff03830 Thu Feb  9 10:08:52 2023 355501: DEBUG: SessINTERNAL: Deleting session 
for hugh, 203.63.154.1, 1234
4ff03830 Thu Feb  9 10:08:52 2023 355722: DEBUG: Handling with 
Radius::AuthFILE:  4ff03830 Thu Feb  9 10:08:52 2023 356113: DEBUG: Reading 
users file ./users.test1
4ff03830 Thu Feb  9 10:08:52 2023 356684: DEBUG: Radius::AuthFILE looks for 
match with 'hugh' [hugh]
4ff03830 Thu Feb  9 10:08:52 2023 356905: DEBUG: Radius::AuthFILE ACCEPT: : 
'hugh' [hugh]
4ff03830 Thu Feb  9 10:08:52 2023 357083: DEBUG: AuthBy FILE result: ACCEPT,  
4ff03830 Thu Feb  9 10:08:52 2023 357214: DEBUG: Handling with 
Radius::AuthGROUP:  4ff03830 Thu Feb  9 10:08:52 2023 357438: DEBUG: Handling 
with Radius::AuthFILE:  4ff03830 Thu Feb  9 10:08:52 2023 357599: DEBUG: 
Reading users file ./users.test2
4ff03830 Thu Feb  9 10:08:52 2023 357979: DEBUG: Radius::AuthFILE looks for 
match with 'hugh' [hugh]
4ff03830 Thu Feb  9 10:08:52 2023 358117: DEBUG: Radius::AuthFILE REJECT: No 
such user: 'hugh' [hugh]
4ff03830 Thu Feb  9 10:08:52 2023 358286: DEBUG: Radius::AuthFILE looks for 
match with 'DEFAULT' [hugh]
4ff03830 Thu Feb  9 10:08:52 2023 358427: DEBUG: Radius::AuthFILE ACCEPT: : 
'DEFAULT' [hugh]
4ff03830 Thu Feb  9 10:08:52 2023 358556: DEBUG: Radius::AuthGROUP:  result: 
ACCEPT,  4ff03830 Thu Feb  9 10:08:52 2023 358676: DEBUG: AuthBy GROUP result: 
ACCEPT,  4ff03830 Thu Feb  9 10:08:52 2023 358801: DEBUG: Access accepted for 
hugh
4ff03830 Thu Feb  9 10:08:52 2023 359059: DEBUG: Packet dump:
4ff03830 *** Sending to 127.0.0.1 port 58195 ....
4ff03830 Code:       Access-Accept
4ff03830 Identifier: 174
4ff03830 Authentic:  <1>c<136><175><209>M<4><239><251><29><210><157>z<222><216>I
4ff03830 Attributes:
4ff03830 OSC-Group-Identifier = "something"
4ff03830 Reply-Message = "GREAT"
4ff03830 


Hopefully that helps.

regards

Hugh


> On 9 Feb 2023, at 02:15, Pavel Krasotin via radiator 
> <[email protected]> wrote:
> 
> Hi All - 
> 
> what is the best way to add attributes to request?
> I would like to authenticate users from one file and add reply attributes 
> from another selecting them by custom attribute, ex. My-User-Group.
> 
> I've done this with PostAuthHook but I think it's ugly.
> 
> Here is my config.
> 
> radiator.cfg:
> ...
> <AuthBy FILE>
>     Identifier  L2TP-USERS
>     Filename    %D/conf.d/l2tp-users
>     PostAuthHook sub { \
>         my ($req, $rep, $handled, $reason) = @_; \
>         if (${$handled} == $main::ACCEPT && ${$req}->code() eq 
> 'Access-Request') \
>         {\
>             my $my_group = ${$rep}->get_attr('My-User-Group'); \
>             &main::log($main::LOG_DEBUG, "Group: " . $my_group); \
>             if ($my_group) {\
>                 ${$req}-> add_attr('My-User-Group',$my_group); \
>             } \
>         } \
>     };
> </AuthBy>
> 
> <AuthBy FILE>
>     AuthenticateAttribute My-User-Group
>     Identifier  L2TP-PROFILE
>     Filename    %D/conf.d/l2tp-profile
> </AuthBy>
> 
> <AuthBy GROUP>
>     Identifier  LOGINUSER
>     AuthByPolicy ContinueUntilReject
>     AuthBy      L2TP-USERS
>     AuthBy      L2TP-PROFILE
> </AuthBy>
> 
> <Handler Service-Type = Framed-User>
>     AuthBy LOGINUSER
>     ...
>     StripFromReply My-User-Group
> </Handler>
> 
> conf.d/l2tp-users:
> user User-Password="password"
>         My-User-Group="l2tp"
> 
> conf.d/l2tp-profile:
> l2tp
>         Service-Type = Framed-User,
>         Framed-Protocol = PPP
> 
> --
> Best wishes
> Pavel
> 
> 
> _______________________________________________
> radiator mailing list
> [email protected]
> https://lists.open.com.au/mailman/listinfo/radiator



--

Hugh Irvine
[email protected] <mailto:[email protected]>

Radiator: the most portable, flexible and configurable RADIUS server 
anywhere. SQL, proxy, DBM, files, LDAP, NIS+, password, NT, Emerald, 
Platypus, Freeside, TACACS+, PAM, external, Active Directory, EAP, TLS, 
TTLS, PEAP, TNC, WiMAX, RSA, Vasco, Yubikey, MOTP, HOTP, TOTP,
DIAMETER, SIM, etc. 
Full source on Unix, Linux, Windows, macOS, Solaris, VMS, NetWare etc.

_______________________________________________
radiator mailing list
[email protected]
https://lists.open.com.au/mailman/listinfo/radiator

Reply via email to