# -*- text -*- # # $Id$ # # Time-based One-Time Passwords (TOTP) # # Defined in RFC 6238, and used in Google Authenticator. # # This module can only be used in the "authenticate" section. # # The Base32-encoded secret should be placed into: # # &control:TOTP-Secret # # Any "bare" key should be placed into: # # &control:TOTP-Key # # If TOTP-Key exists, then it will be used instead of TOTP-Secret. # # The TOTP password entered by the user should be placed into: # # &request:TOTP-Password # # The module will return "ok" if the passwords match, and "fail" # if the passwords do not match. # # Note that this module will NOT interact with Google. The module is # intended to be used where the local administrator knows the TOTP # secret key, and user has an authenticator app on their phone. # # Note also that while you can use the Google "chart" APIs to # generate a QR code, doing this will give the secret to Google! # # Administrators should instead install a tool such as "qrcode" # # https://linux.die.net/man/1/qrencode # # and then run that locally to get an image. # # # Some tokens get severely out of sync with local time. It is # possible to offset the definition of "now" for one token by setting: # # &control:TOTP-Time-Offset := 120 # # This is a signed integer, with allowed values between -600 to +600. # The offset is added to to the current time, to get the tokens idea # of "now". # totp { # # Default time step between time changes # time_step = 30 # # Length of the one-time password. # # Must be 6 or 8 # otp_length = 6 # # How many steps backward in time we look for a matching OTP # lookback_steps = 1 # # How many steps forward in time we look for a matching OTP # lookforward_steps = 0 # # Time delta between steps. # # Cannot be larger than time_step # lookback_interval = 30 }