authorization depending on authentication (ldap)
Bjørn Mork
bjorn at mork.no
Thu Jan 5 11:56:33 CET 2006
tschaos at gmx.net writes:
> i am running freeradius-1.0.2-5.5
> there are 3 ldap instances:
> ldap1,ldap2,ldap3.
>
> and authenticate them all after another in the authentication section like
> this:
>
> authenticate {
> ldap1
> ldap2
> ldap3
> }
>
> same in authorize-section:
>
> authorize {
> ldap1
> ldap2
> ldap3
> }
>
> now my problem is, that if the user x is authenticated at ldap2 for instance
> the authorization fails cause the user isnt found at ldap1 (freeradius
> doesnt seem to try authorizing on ldap2 or ldap3)
>
> what i need would be a solution how to realize the following needs:
>
> if authentication runs over ldap1 authorize on ldap1
> if authentication runs over ldap1 authorize on ldap2
> if authentication runs over ldap1 authorize on ldap3
>
> how can i do that?
I assume you meant
if authentication runs over ldap1 authorize on ldap1
if authentication runs over ldap2 authorize on ldap2
if authentication runs over ldap3 authorize on ldap3
The authenticate processing should set Auth-Type to an unique value
for each instance. If you're using the default schema, then you can
do that by adding a radiusAuthType ldap attribute to each user. Or
maybe better: Use a default profile to set the appropriate
radiusAuthType for each ldap instance.
E.g. add something like this to the directories:
ldap1:
dn: cn=radprofile,ou=dialup,o=My Org,c=UA
radiusAuthType: LDAP1
ldap2:
dn: cn=radprofile,ou=dialup,o=My Org,c=UA
radiusAuthType: LDAP2
ldap3:
dn: cn=radprofile,ou=dialup,o=My Org,c=UA
radiusAuthType: LDAP3
And then in radiusd.conf:
modules {
..
ldap ldap1 {
..
default_profile = "cn=radprofile,ou=dialup,o=My Org,c=UA"
..
}
ldap ldap2 {
..
default_profile = "cn=radprofile,ou=dialup,o=My Org,c=UA"
..
}
ldap ldap3 {
..
default_profile = "cn=radprofile,ou=dialup,o=My Org,c=UA"
..
}
}
..
authorize {
Auth-Type LDAP1 {
ldap1
}
Auth-Type LDAP2 {
ldap2
}
Auth-Type LDAP3 {
ldap3
}
}
Note: This would be a lot easier with freeradius-1.1, where I believe
something like this would have been sufficient since rlm_ldap now sets
Auth-Type to the instance name by default:
authorize {
Auth-Type ldap1 {
ldap1
}
Auth-Type ldap2 {
ldap2
}
Auth-Type ldap3 {
ldap3
}
}
Bjørn
More information about the Freeradius-Users
mailing list