LinOTP is an open solution for strong two-factor authentication with One Time Passwords.
The core modules and basic necessary components are licensed under the AGPLv3, so that you are able to have a complete working open source solution. But LinOTP 2 is also open as far as its modular architecture is concerned. LinOTP 2 aims to not bind you to any decision of the authentication protocol or it does not dictate you where your user information should be stored. This is achieved by its new, totally modular architecture.
LinOTP also provides a modular architecture to calculate OTP values. Thus many different OTP algorithms can be supported by LinOTP. LinOTP is orignially based on the HMAC-OTP algorithm. This open algorithm is definded in RFC4226.
The HMAC-OTP algorithm calculates an OTP value on the basis of a secret key, that is shared between the LinOTP server and the user. This secret key is not put plainly in the users hand but is forged into a piece of hardware device – the OTP token. LinOTP supports several different hardware and software OTP tokens. Starting with the release 2.0.1 LinOTP also supports the motp token. More tokens are about to be supported.