Previous Topic: FPS LDAP SettingsNext Topic: FPS Change Password Process


FPS Identify Process

The first thing that FPS must do when invoked by a user is to attempt to identify the user. All of the information that FPS needs to do this is defined in a section headed by a single line in the FPS configuration file containing the text:

[FPS-Identify]

Everything appearing after this line and before the start of another section is considered part of the identification section.

Prior to APS Version 4.0, this section was called [Identify]. In Version 4, this was renamed to [FPS-Identify]. The old name is still recognized and will be processed correctly, but a warning will be issued about the use of the deprecated name.

This section specifies the form(s) required to identify the user, how the forms are to be used, and how to handle various typical error conditions.

Collecting Identification Information

URL

Value: URL

Default: none

Recommended: required

Code Description: URL

Complexity Level: Basic

When FPS is first invoked by a user, this is the page that FPS will first cause to be displayed. It is expected to present a form to the user. It must be a page that is not protected by SiteMinder. It need not be on the same directory as the Forgot stub.

URL=/FPS/Identify.jsp
Missing URL

Value: URL

Default: the value of URL above

Recommended: yes

Code Description: Missing URL

Complexity Level: Intermediate

If the user fails to fill in all of the required fields or one or more of the fields contain an invalid character, FPS will redirect the user to this URL. The URL will have a list of this missing or invalid fields appended to it, separated with ampersands ("&"). A question mark will be appended before the field names, if required.

There is currently no way to tell if the fields in error were empty but required, or if they contained invalid data.

Missing URL=/FPS/Identify-Missing.jsp
Multiple URL

Value: URL

Default: the value of Missing URL above, with ?MoreData
appended

Recommended: yes

Code Description: Multiple URL

Complexity Level: Intermediate

If the user filled out the form presented by the URL, but multiple users were found matching the input criteria, this page is displayed. Depending upon your site, one of two cases may be in effect, in which case, this form must handle the correct case.

First, if the required fields on the identify form must absolutely define a single user, then you have a data or login error in your flow and this page must handle the error case.

If, on the other hand, your identify form has optional fields on it, this page might just request further information. For example, if your identification form requires first name and last name, but mail is optional, there may be more than one "Bill Smith" on file. This page could then request that one or more of the optional fields be supplied to further refine the search.

Multiple URL=/FPS/Identify.jsp?MoreData

Error Cases

Not Found URL

Value: URL

Default: the value of Missing URL above, with ?NotFound appended

Recommended: yes

Code Description: Not Found URL

Complexity Level: Intermediate

If no user matches the input criteria, this page will be presented to the user. This is a terminating case (the FPS process is done, since no user can be identified).

If not supplied, the value of Missing URL is used, with ?NotFound appended.

Not Found URL=/FPS/Unknown.jsp
Disabled URL

Value: URL

Default: none

Recommended: yes

Code Description: Disabled URL

Complexity Level: Basic

If the user is properly identified, but it turns out that the user is disabled for any reason, the user will be redirected to this page. This is a terminating case, since the FPS process cannot continue.

Note that this case is different, but related to, the Lockout case. Typically, this page refers the user to a customer server center.

Disabled URL=/FPS/Disabled.jsp
Disabled Mail

Value: Mail file(s)

Default: none

Recommended: if your site has email addresses on file

Complexity Level: Advanced

If the user is properly identified, but it turns out that the user is disabled for any reason, FPS can send mail. This setting specifies the files to send. If possible, mail should be sent to the actual user, since the user accessing FPS might not be the owner of the account.

This setting is optional and has no default.

Disabled Mail=Disabled.email

Form Processing

These settings describe the identification form, its fields, and its requirements. FPS uses these settings to ensure that the entered data is valid.

It may seem possible to perform these edits using JavaScript. In fact, it is highly recommended that a site do so to reduce round trips to the server. However, JavaScript processing can be turned off by some browsers and can be modified by a savvy user, so FPS performs these edits as well.

Required

Value: HTML field names

Default: none

Recommended: required

Complexity Level: Basic

This setting contains a list of the HTML fields on the identify (and missing and multiple) forms that are required. If any field identified by this setting is posted without a value, FPS will redirect the user to the page identified by the Missing URL setting above.

Names are not case sensitive, may appear in any order and are separated by semicolons. Multiple fields with the same name are not supported.

An FPS configuration error will occur if a field is posted that is neither required nor optional.

Required=FirstName;LastName
Optional

Value: HTML field names

Default: none

Recommended: if needed

Complexity Level: Intermediate

Some fields on the identification forms can be optional; that is, the user need not provide a value. Usually, these fields are only used to further refine the user identification process (see the example under the description for the Multiple URL setting).

This setting contains a list of HTML fields that are optional.

Names are not case sensitive, may appear in any order and are separated by semicolons. Multiple fields with the same name are not supported.

An FPS configuration error will occur if a field is posted that is neither required nor optional.

If the Submit button has a name (is renamed), then its value will be posted. In this case, its name must be defined as an Optional field.

Optional=Phone;City;State;UserID;phonenow;Mail
Lookup

Value: special (see text)

Default: none

Recommended: required

Complexity Level: Basic

Once the identify form is posted and all of the fields validated (required fields not blank and no fields contain invalid characters), this setting is used to determine how to look up the user.

This setting consists of HTML Field/attribute mappings, separated by either an equal sign ("=") or a equal sign/tilde ("=~"). Each pair is separated from the others by a semicolon. Names are not case-sensitive, but the order that they appear can have a significant performance impact.

A pair is only used if there is non-blank input for the HTML field.

For each combination, FPS builds a search string for the user, comparing the attribute/column with the value supplied on the form. If an equal sign is used, then the value must compare exactly (but may be subject to the comparison rules of the underlying Directory). If the tilde ("~") is used, then a case-insensitive match is performed.

Basically, you want the most specific items first in the list, with less specific items appearing later.

Multiple attributes can be specified for the same HTML field, separated from each other by commas. This indicates that the value of the field could be in any of the supplied attributes. This is typically used for phone numbers, where the supplied number could be in the telephone, homePhone, or mobile attributes. FPS will create an OR condition in this case that will be ANDed with all other clauses.

Not all fields need to appear in the Lookup setting, but a field in this setting that is neither Required nor Optional will never be used for lookup. A field that does not appear in this setting could be used in mail, for example (in some examples, the user can enter a "Phone number where you can be reached right now" that could be sent as mail to a customer service desk in the event of an error case).

Lookup=UserID=uid;FirstName=givenname;
			  LastName=sn;Mail=mail;
			  Phone=telephoneNumber,homePhone;
			  City=~l;State=st

Controlling Frequency of Use

Max Success Frequency

Value: number of days

Default: none

Recommended: 7

Complexity Level: Advanced

Some sites may wish to limit the use of FPS to prevent misuse. Some users may use FPS instead of their password, if the password content policies make memorable passwords too difficult. This setting can be used to prevent a user from successfully using FPS too frequently.

This setting specifies, in days, how much time must elapse after a successful use of FPS before a user can use FPS again.

For example, if the user uses FPS today to recover his password, he cannot use FPS again for a week if this value is seven. If he attempt to do so, he will be redirected to the Too Recently Used URL below.

For this feature to work with ODBC correctly, the FPS Logging queries (starting on page 107) must be defined.

Max Success Frequency=7
Too Recently Used URL

Value: URL

Default: none

Recommended: required if Max Success Frequency is set above

Code Description: Too Recently Used URL

Complexity Level: Advanced

If a user attempts to use FPS too soon after he has already recovered a password (based on the Max Success Frequency above), the user will be sent to this page.

For this feature to work with ODBC correctly, the FPS Logging queries (starting on page 107) must be defined.

Too Recently Used URL=/FPS/TRU.jsp
Too Recently Used Mail

Value: mail file(s)

Default: none

Recommended: ignored unless Max Success Frequency is set above

Complexity Level: Advanced

If the user is sent to the Too Recently Used URL above, any mail files specified in this setting are also sent, if possible.

For this feature to work with ODBC correctly, the FPS Logging queries (starting on page 107) must be defined.

Too Recently Used Mail=TRU.email
Max Attempts Frequency

Value: number

Default: none

Recommended: 1

Complexity Level: Advanced

FPS is a weak link in your site's security. A user's account can be attacked and entered without using a password using FPS. If a site uses questions to verify the user, the answers to those questions can often be socially engineered or obtained from other sources.

In order to improve security against such a hacker attack, this setting can control how often APS can be used by an account. It specifies, in days, how much time must elapse after any use of FPS (success or failure) before a user can use FPS again.

For example, if Jane Doe uses FPS today to recover John Smith's password today, but either fails to answer the question correctly or leaves the process without answering the question, nobody can use FPS against John Smith's account again for a day if this value is one. If someone attempts to do so, they will be redirected to the Too Recently Attempted URL below.

For this feature to work with ODBC correctly, the FPS Logging queries (starting on page 107) must be defined.

Max Attempts Frequency=1
Too Recently Attempted URL

Value: URL

Default: none

Recommended: required if Max Attempts Frequency is set above

Code Description: Too Recently Attempted URL

Complexity Level: Advanced

If a user attempts to use FPS too soon after any attempt to recover a password (based on the Max Attempts Frequency above), the user will be sent to this page.

For this feature to work with ODBC correctly, the FPS Logging queries (starting on page 107) must be defined.

Too Recently Attempted URL=/FPS/TRA.jsp
Too Recently Attempted Mail

Value: mail file(s)

Default: none

Recommended: ignored unless Max Attempts Frequency is set

Complexity Level: Advanced

If the user is sent to the Too Recently Attempted URL above, any mail files specified in this setting are also sent, if possible.

For this feature to work with ODBC correctly, the FPS Logging queries (starting on page 107) must be defined.

Too Recently Attempted Mail=TRA.email

Preventing Attacks

Lockout Count

Value: number

Default: none

Recommended: 3

Complexity Level: Intermediate

Adept hackers will attempt to access your system using FPS. Even if your site uses validation questions, a hacker can gain access by socially engineering the answers to questions.

This setting essentially sets a "3 strikes, you're out" policy on FPS. This setting identifies the number of failed attempts to use FPS that occur before FPS is locked out for that account.

Each time that a user fails to complete an FPS session, this counter is incremented by one. Once the count reaches Lockout Count, FPS is no longer available for this account.

This number is only reset upon successful completion of an FPS session. Note that this means that if the account is locked out, there is no way for the user to reset this value. The only way for this value to be reset is for an administrator to clear smfpsLockoutCounter using a User Administration tool such as APSAdmin or CA Identity Manager.

This setting can automatically be reset upon successful SiteMinder authentication if the Reset FPS Lockout setting is turned on.

Lockout Count=3
Lockout URL

Value: URL

Default: none

Recommended: 3

Code Description: Lockout URL

Complexity Level: Intermediate

If the user is locked out due to the Lockout Count, the user will be redirected to this page. The user will always be redirected to this page the first time that the count is reached. Further attempts to use FPS will also redirect the user to this page.

Lockout URL=/FPS/Lockout.jsp
Lockout Mail

Value: mail file(s)

Default: none

Recommended: if possible

Complexity Level: Advanced

If the user is locked out of FPS when attempting to recover a password, the files specified by this setting will be sent as email, if possible.

This is useful to detect intruders, in that the mail could be sent to an administrator account.

It is also useful to send mail to the user, if possible, since the user will not see the Lockout URL if the account is disabled by a hacker.

Lockout Mail=Lockout.email
Lockout Timer

Value: 0 to 365 * 24 * 60

Default: 0

Recommended: if possible

Complexity Level: Advanced

If the user is locked out of FPS when attempting to recover a password, FPS normally locks out the user permanently. This setting specifies a delay to use instead. The user will not be allowed to use FPS for this many minutes.

Lockout Timer=60

FPS Verify Process

At the end of the Identify phase, FPS knows the identity of the user. Some sites may wish to attempt to verify that the user is who he claims to be (this process is highly recommended). If this is desired, the settings in the FPS-Verify section should be used.

All of the information that FPS needs to do this is defined in a section headed by a single line in the FPS configuration file containing the text:

[FPS-Verify]

Everything appearing after this line and before the start of another section is considered part of the verify section.

Prior to APS Version 4.0, this section was called [Verify]. In Version 4, this was renamed to [FPS-Verify]. The old name is still recognized and will be processed correctly, but a warning will be issued about the use of the deprecated name.

This section specifies the form(s) required to verify the user, how the forms are to be used and how to handle various common error conditions.

Forms

These settings define the forms that FPS should use to query the user for verification information.

URL

Value: URL

Default: none

Recommended: yes

Code Description: URL

Complexity Level: Intermediate

If verification is to be used, this setting must be specified. This setting tells FPS where to send the user for verification. It is a form.

URL=/FPS/Verify.jsp
Missing URL

Value: URL

Default: the value of URL above

Recommended: yes

Code Description: Missing URL

Complexity Level: Intermediate

If the user fails to fill in all of the required fields or one or more of the fields contain an invalid character, FPS will redirect the user to this URL. The URL will have a list of this missing or invalid fields appended to it, separated with ampersands ("&"). A question mark will be appended before the field names, if required.

There is currently no way to tell if the fields in error were empty, but required, or if they contained invalid data.

URL=/FPS/Verify.jsp
Retry URL

Value: URL

Default: none

Recommended: no

Code Description: Retry URL

Complexity Level: Intermediate

If the user fails to answer the questions properly, he can be sent to one of two places. If this setting is not specified, the user will be sent to the page identified by the Invalid URL setting below, otherwise this setting will be used.

If set, the user will be sent to the Retry URL to re-attempt verification. Depending on the values in the Initial setting, the initial values may or may not differ. It is up to the site to control the number of times that retries can occur. Usually, this is controlled using the Restrict or Consume special instructions so that initial values are not reused and eventually run out (sending the user to the No Data URL below).

The use of this keyword is in no way affected by, nor affects, the Lockout Count settings, since Lockout Count only affects entry to the entire process, not looping within the process.

The use of this keyword significantly reduces the security of FPS, so we do not recommend its use.

Retry URL=/FPS/RetryVerify.jsp

Error Conditions

Invalid URL

Value: URL

Default: the value of URL above

Recommended: yes

Code Description: Invalid URL

Complexity Level: Intermediate

If the user answers the verification wrong, FPS will direct the user to this page. This is a terminal condition; the FPS process is terminated.

Invalid URL=/FPS/Unverified.jsp
Invalid Mail

Value: mail file(s)

Default: none

Recommended: yes

Complexity Level: Advanced

If the user answers the verification wrong, FPS will send these files, if possible, via email.

Invalid Mail=NoVerify.email
No Data URL

Value: URL

Default: none

Recommended: yes, if required

Code Description: No Data URL

Complexity Level: Intermediate

The Initial setting (described below) specifies the initial field settings that the URL is to receive before processing. In the Initial setting, some values may be marked required. If so, and no value (or not enough values) can be determined, the user will be sent to this page instead. This is a terminal condition (FPS processing terminates - the user cannot use FPS).

Typically, this is a page directing the user to a customer service representative.

No Data URL=/FPS/NoData.jsp
No Data Mail

Value: mail file(s)

Default: none

Recommended: yes, if required

Complexity Level: Advanced

If the user will be redirected to the No Data URL above, the file(s) specified by this setting can also be sent via email.

No Data Mail=NoData.email
Timeout URL

Value: URL

Default: none

Recommended: yes

Code Description: Timeout URL

Complexity Level: Intermediate

This setting specifies a page to send the user if the user failed to answer the questions within the period specified by the Timeout setting ("You did not answer quickly enough"). This reduces the ability of a hacker to socially engineer the answers to the verification question(s).

This is a terminal condition (FPS processing terminates - the user cannot use FPS at this time).

Timeout URL=/FPS/Timeout.jsp

Form Handling

These settings describe the verify form, its fields, and its requirements. FPS uses these settings to ensure that the entered data is valid.

It may seem possible to perform these edits using JavaScript. In fact, it is highly recommended that a site do so to reduce round trips to the server. However, JavaScript processing can be turned off by some browsers and can be modified by a savvy user, so FPS performs these edits as well.

Required

Value: HTML field names

Default: none

Recommended: required

Complexity Level: Basic

This setting contains a list of the HTML fields on the verify (and retry) forms that are required. If any field is posted without a value, FPS will redirect the user to the page identified by Missing URL setting above.

Names are not case sensitive, may appear in any order and are separated by semicolons. Multiple fields with the same name are only supported using special instructions (see the Initial setting below). If the special instruction field requires multiple values, the correct number of values must be specified by the user.

An FPS configuration error will occur if a field is posted that is neither required nor optional.

Required=SecretAnswer
Optional

Value: HTML field names

Default: none

Recommended: if needed

Complexity Level: Intermediate

Some fields on the verify form can be optional; that is, the user need not provide a value. For example, if the Submit button has a name (is renamed), then its value will be posted. In this case, its name must be defined as an Optional field.

This setting contains a list of HTML fields that are optional.

Names are not case sensitive, may appear in any order and are separated by semicolons.

An FPS configuration error will occur if a field is posted that is neither required nor optional.

Optional=SubmitButton
Lookup

Value: special (see text)

Defalt: none

Recommended: required

Complexity Level: Advanced

Once the verify form is posted and all of the fields validated (required fields not blank and no fields contain invalid characters), this setting is used to determine how to look up the user.

This setting consists of HTML Field/attribute mappings, separated by either an equal sign ("=") or an equal sign/tilde ("=~"). Each pair is separated from the others by a semicolon. Names are not case-sensitive, but the order that they appear can have a significant performance impact.

A pair is only used if there is non-blank input for the HTML field.

For each combination, FPS builds an evaluation expression for the user, comparing the attribute with the value supplied on the form. If an equal sign is used, then the value must compare exactly (in this case, the comparison defined by the underlying User Directory is irrelevant, FPS will require the exact match). If the tilde ("~") is used, then a case-insensitive compare is performed.

All such expression are combined with an AND operator, then checked against the user previously identified.

Multiple attributes can be specified for the same HTML field, separated from each other by commas. This indicates that the value of the field could be in any of the supplied LDAP attributes. This is typically used for phone numbers, where the supplied number could be in the telephone, homePhone, or mobile attributes. FPS will create an OR condition in this case that will be ANDed with all other clauses.

Not all fields need to appear in the Lookup setting, but a field in this setting that is neither Required nor Optional will never be used for lookup. A field that does not appear in this setting could be used in mail, for example (in some examples, the user can enter a "Phone number where you can be reached right now" that could be sent as mail to a customer service desk in the event of an error case).

If a field has special instructions (see the Initial setting below) that require multiple values, the query will be built appropriately (varies by special instruction).

Lookup=SecretAnswer=~personalAnswerLookup=SecretAnswer=QuestionList
Initial

Value: special (see text)

Deault: none

Recommended: as needed

Complexity Level: Intermediate

Usually, the verify page will need data from the user's record for display (see the chapter entitled Presentation Forms for details as to how this information is passed to the form). This setting controls what information is passed to the form. This is not required if the page does not need information about the user.

Sometimes, this is as simple as putting the identified user's name on the form. Other times, displaying the verification question selected by the user is required.

The format of this setting is as name/value pairs, separated by an equal sign ("="). Multiple pairs are separated by semicolons.

The name in each pair is the name that the page uses to identify the data element. It need not correspond to an HTML element. It is used inside the data cookie to name the field.

The second part of the pair identifies the name of the attribute from which FPS is to read the data value. Multiple values are not supported, except as defined by a Special Instruction.

If the name is prefaced by an asterisk, then the field must have a value. If, after looking up the attribute, the field does not have a value, the user will be redirected to the No Data URL.

Initial=*Name=cn;*Question=secretQuestion

Special Instructions

After the attribute name, special instructions can be specified for the field. Special instructions are surrounded by square brackets ("[" and "]") and immediately follow the attribute name.

Special instructions define special processing or formatting required for the field.

Special instructions consist of keywords separated by commas. Every special instruction requires a Format keyword. Other keywords vary by format. At the time of this writing, only Format=A and Format=B are supported. Additional formats may be supported in the future.

ODBC Encrypt

Value: Attribute list, comma separated

Default: none

Recommended: as required

Complexity Level: Advanced

This setting specifies one or more attributes that must be encrypted or hashed before comparison. FPS will call the Compare FPS Answer query, if that query is defined.

If the Compare FPS Answer query is not defined, it will attempt to call a stored procedure on the User Directory called ODBCEncrypt_<attribute> with two parameters, the user name and the value for the attribute entered by the user. The procedure is expected to return a single Boolean (or integer) result. A non-zero return indicates that the value compared successfully.

ODBC Encrypt=SecretAnswer
Timer

Value: Number

Default: none

Recommended: 300

Complexity Level: Intermediate

This setting controls how much time (in seconds) is allowed to elapse before the user submits the verify form. If the user waits too long, the user will be redirected to the Timeout URL when the page is finally posted.

Timeout=300