1.6.11. Selfservice policies#
If you want to define policies for users accessing the Selfservice Portal, you need to enter:
Policy name : “your policy name”
Scope : “selfservice”
User : “*, username, regex” for details show Users in policies
Realm : “*, realmname”
You need to put a realm name into the realm field. Then this policy will work for all users within this realm logging in to the Selfservice Portal. You can also put a * into the realm field, thus the policy will be valid for all realms.
Client : “FQDN, IP-Addr, Network”
You may add clients in this policy so that you can define a different behaviour within the Selfservice Portal depending on from where the user will log in to the Selfservice Portal. For details show Clients in policies.
Time : Empty means any time
You can now add actions to the resulting users from the realms.
Valid actions are:
mfa_login
Starting with LinOTP 2.10 the login to the Selfservice Portal can be protected with a second factor. This requires the user to have at least one working token for the log in. If the user have multiple tokens a selection menu is displayed. Auto Assignment of tokens works for the log in to the Selfservice Portal Auto Assignment.
mfa_3_fields
This options alters the MFA Selfservice Portal login dialog to show 3 fields (username, password, OTP). The action can only be used as extension to mfa_login.
mfa_passOnNoToken
If the user does not have a token, this action allows the login without OTP. If the user has a token assigned, the OTP of the token is required.
enrollPUSH
The user is allowed to enroll LinOTP Push Tokens. To use the token, the activation is necessary.
activate_PushToken
The user is allowed to activate his Push Token.
enroll_QR
The user is allowed to enroll LinOTP QR Tokens. To use the token, the activation is necessary.
activate_QRToken
The user is allowed to activate his QR token.
enrollEMAIL
The user is allowed to enroll email tokens.
edit_email=<0|1>
Set to ‘1’ to allow the user to set their own mail address for a self enrolled email token (this is the default). If set to ‘0’, the address is received from the UserIdResolver.
enrollSMS
The user is allowed to enroll SMS tokens.
edit_sms=<0|1>
Set to ‘1’ to allow the user to set the mobile number for a self enrolled SMS token (this is the default). If set to ‘0’, the number is received from the UserIdResolver.
enrollHMAC
The user is allowed to enroll HMAC based HOTP tokens.
hmac_hashlib=<int>
Configures the hash library that is used for new HOTP tokens. Possible values are 1 (for sha1), 2 (for sha256) or 3 (for sha512).
hmac_otplen=<int>
Configures the otp length of new HOTP tokens. Allowed values are 6 and 8.
max_count_hotp=<int>
User may retrieve future OTP values of HOTP tokens. Please refer to Retrieving OTP values for details.
enrollMOTP
The user is allowed to enroll mOTP tokens.
setMOTPPIN
The user is allowed to reset/set the mOTP PIN of his mOTP tokens.
enrollOCRA2
The user is allowed to enroll OCRA2 tokens. To use the OCRA2 token, the activation is necessary.
activate_OCRA2
The user is ahllowed to activate his OCRA2 token.
enrollTOTP
The user is allowed to enroll TOTP tokens.
totp_hashlib=<int>
Configures the hash library that is used for new TOTP tokens. Possible values are 1 (for sha1), 2 (for sha256) or 3 (for sha512).
totp_otplen=<int>
Configures the otp length of new TOTP tokens. Allowed values are 6 and 8.
totp_timestep=<int>
Configures the timestep that is used for new TOTP tokens. Allowed values are 30 and 60.
max_count_totp=<int>
User may retrieve future OTP values of TOTP tokens. Please refer to Retrieving OTP values for details.
enrollU2F
The user is allowed to enroll U2F tokens.
enrollYUBICO
The user is allowed to enroll YUBICO tokens.
max_count_dpw=<int>
User may retrieve future OTP values of Tagespasswort tokens. Please refer to Retrieving OTP values for details.
webprovisionGOOGLE
The user is allowed to enroll HOTP tokens with Google Authenticator compatible presets.
webprovisionGOOGLEtime
The user is allowed to enroll TOTP tokens with Google Authenticator compatible presets.
assign
The user is allowed to assign an already imported token to himself.
unassign
The user is allowed to unassign his own tokens.
enable
The user is allowed to enable his disabled tokens.
disable
The user is allowed to disable his own tokens.
delete
The user is allowed to delete his own token. This token will be removed
completely from the database, but will remain in the audit trail.
reset
The user is allowed to reset the failure counter of his tokens.
resync
The user is allowed to resynchronize his HMAC tokens.
getserial
If this action is active, the token can be assigned by entering the OTP value. You also need to specify the action
assign
. On the assign tab an additional entry for the OTP value will be displayed.getotp
The getotp tab will be displayed. Additionally the linotp.ini file needs to be adapted and a policy max_count for the token type needs to be defined.
setOTPPIN
The user is allowed to reset/set the OTP PINs of his tokens.
otp_pin_minlength
Configures the minimal length of the PIN set by the user. For further details see OTP PIN policies.
otp_pin_maxlength
Configures the maximal length of the PIN set by the user. For further details see OTP PIN policies.
otp_pin_contents
Configures allowed characters for the PIN. For further details see OTP PIN policies.
show_landing_page
this action displays a landing page after the successful login of a user in to the selfservice portal. The content of this page can be customized as described here: Customization.
history
If this action is active, the user will see a tab with a list (like Audit Trail) of all actions he did or all the actions an administrator performed on his tokens.
verify
The user needs to verify new tokens after enrollment. Existing tokens can be tested to verify correct functionality.
Starting with LinOTP 2.5.2 you can also put users or resolvers in the user field. For an explanation on this take a look at Users in policies.
OTP PIN policies#
Policies on how the OTP PIN should look like can be defined for the self service portal. Thus the administrator can assure, that the user chooses a OTP PIN that is secure enough to his opinion.
OTP PIN policies will be checked whenever a user tries to reset an OTP PIN in the Selfservice Portal. The policies are defined like this:
scope = selfservice
realm
A list of comma separated realms, the policy should apply to.
action
Allowed actions are followed by a number or character codes. The actions can be comma separated.
otp_pin_maxlength=12 This action would define that the user is only allowed to set OTP PIN with a maximum length of 12 characters.
otp_pin_minlength=4 This action would define that the user needs to set an OTP PIN that is at least 4 characters long.
otp_pin_contents=cnso This action defines, what characters need to be contained in the OTP PIN: - c: Only OTP PINs containing at least one letter character will be accepted. - n: Only OTP PINs containing at least one digit character will be accepted. - s: Only OTP PINs containing at least one special character will be accepted. - o: Only OTP PINs containing at least one special character, that is not contained in the other character groups, will be accepted.
Example: So if you want your users to choose OTP PINs, that contain letters and number and that should be between 6 and 8 characters long, you should define an action like this:
otp_pin_maxlength=8, otp_pin_minlength=6, otp_pin_contents=cn
Character groups#
The character groups are defined like this.
The default for characters (letters) “c” is the regular expression:
[a-zA-Z]
The default for digits “n” is the regular expression:
[0-9]
The default for special characters “s” is the regular expression:
[.:,;-_<>+*!/()=?$§%&#~^]
The character group “o” contains all characters, that are not contained in one of the above groups.
Changing the character group definition#
These regular expressions can be changed in the linotp.ini file using these parameters:
linotpPolicy.pin_c = [a-ZA-Z]
linotpPolicy.pin_n = [0-9]
linotpPolicy.pin_s = [.:,;-_<>+*!/()=?$§%&#~\^]
Note
Some characters need to be escaped using the “\”.
So if you want the OTP PIN to have an upper letter at any cost, you may change the linotpPolicy.pin_c = [A-Z] and an otp_pin_contents = c. Then setting the PIN will complain, if it does not contain an upper letter.
Reversing the OTP PIN logic#
The default logic is that the OTP PIN must at least contain the specified characters and may contain any more characters, digits or signs that are not required. There are two prefixes to change this logic
-:
The minus sign will require to contain the specified character groups, but will require, that the characters not specified are not used in the OTP PIN.
Examples:
-cn: This will require the OTP PIN to contain at least a letter and a digit. But as soon as the OTP PIN contains a special character or any other character the OTP PIN will not be valid. A PIN like “a12” or “b12” would be OK, but a PIN like “abc” or “test!” would not be valid.
-s: The OTP PIN may only contain the specified special characters, not any digits, letters or other characters.
+:
The plus sign will combine the specified character groups. It will require, that characters from any of the character groups are contained in the PIN, but characters not in the character groups must not be contained in the PIN.
Example:
+cn: The PIN needs to contain letters or digits, but must not contain any special characters. A PIN like “123”, “abc”, “a12” would be OK.
Example: If you want to have the user always use PINs that are exactly 4 digits long, you can set:
otp_pin_maxlength=4, opt_pin_minlength=4, otp_pin_contents=-n
Retrieving OTP values#
In the scope=selfservice you can define the following actions:
max_count_dpw=<int> for retrieving OTP values of Tagespasswort tokens.
max_count_hotp=<int> for retrieving OTP values of HOTP/HMAC tokens.
max_count_totp=<int> for retrieving OTP values of TOTP tokens.
These actions are the equivalent to the gettoken actions (see Gettoken Policies). When these actions are defined, the user in such a realm is allowed to retrieve future OTP values of his own OTP tokens. You need to also specify the policy scope=selfservice, action=getotp and edit the linotp.ini file to enable OTP retrieval.