Till date, I have relied on the holy combination of sticky cache, single-connection and fairly high value of mavis cache timeout for using RADIUS as a reliable user backend for MAVIS but looking at the March 20 and 21, 2021 snapshots, I believe those changes can provide a different/better way to accomplish the same.
yes, adding the tacinfo_cache module makes some other features
obsolete. Group memberships will be saved to file and are
available to all worker processes, at least on the same system.
This:
mavis module = tacinfo_cache {
directory = /tmp/tacinfo
}
mavis module = external {
exec = /usr/local/sbin/radmavis ...
}
should be sufficient (but keep in mind that the daemon will not
remove any files from the directory specified, so a cleanup cron
job might be advisable).
Having said that, I know you left a note on radmavis changes that those changes are untested and I haven't tested them either (yet) but looking at the diff I believe the logic is to iterate over a list of AV pairs returned by RADIUS authentication and extracting the values for the chosen group attribute but I'm afraid, may be I'm terribly missing something, or "mc" really is missing value manipulation.
The "untested" radmavis part is the group retrieval code. Running radmavis with the "group_attribute=class" or "group_attribute=25" should now map the returned value to TAC_MEMBER, but I currently don't have a RADIUS server at home to test this.
Cheers,
Marc