Hi,<div><br></div><div>I'm kinda new to Freeradius and at the same time I'm learning it, I'm seeing I gonna need to develop a new module for it.</div><div><br></div><div>This module will do OTP two way authentication. It will extract part of the password (ex.: latest 6 digits) to verify and the remaining "password" will be returned to Freeradius to test against another module (LDAP for example).</div>

<div><br></div><div>In this module I need to store user information on some place, including usernames, keys, secrets, last OTP, offset, etc.</div><div><br></div><div>I have some options:</div><div><br></div><div>* Use some file like the "users" file from freeradius or a tabulated file. Read this file in memory and update user information in memory and in file when needed, so if Freeradius is restarted, or the machines crashes, the updated information is not lost. However I don't know exactly if I'm going to have problems with the "module needs to update file" part. Don't know how Freeradius's internal API/libs work with files.</div>

<div><br></div><div>I'm trying to understand rlm_files.c but this module only reads the "users" file.</div><div><br></div><div>* Use MySQL or Redis to store this information. As they support atomic operations I should have no problem using them. However I gonna need to link the module against some external lib and I fear this may bring Freeradius some problems, and I'll have another service to monitor, manage, etc.</div>

<div><br></div><div>What do you suggest? Is there any other way to do this two way authentication without needing to develop a module for it?</div><div><br></div><div>thanks in advance,</div><div><br></div><div>Herbert</div>

<div><br></div><div><br></div>