A method for authenticating a user to a target server, the method comprising: receiving a request from a user computer system to authenticate the user to the target server; determining whether authenticating the user requires matching an authentication plan which specifies one or more defined authentication steps that must be performed before a user is allowed to authenticate; in response to determining that matching an authentication plan is not required, verifying the user's authentication credentials; in response to determining that matching an authentication plan is required, accessing a stored authentication plan associated with the user from an authentication plan repository, the stored authentication plan having one or more authentication records each having expected data associated with user access to a server at a previous layer of authentication than the target server and the authentication steps; receiving an indication of whether a current authentication plan exists in the authentication store, the current authentication plan having one or more authentication records each having current data associated with user access to a server at a previous layer of authentication than the target server and the authentication steps; transmitting a request for a current authentication plan to the user computer system; receiving the current authentication plan at the target server; comparing the stored authentication plan with the received current authentication plan to determine whether they match; and in response to a match between the stored authentication plan and the current authentication plan, authenticating the user. receiving a request from a user computer system to authenticate the user to the target server; determining whether authenticating the user requires matching an authentication plan which specifies one or more defined authentication steps that must be performed before a user is allowed to authenticate; in response to determining that matching an authentication plan is not required, verifying the user's authentication credentials; in response to determining that matching an authentication plan is required, accessing a stored authentication plan associated with the user from an authentication plan repository, the stored authentication plan having one or more authentication records each having expected data associated with user access to a server at a previous layer of authentication than the target server and the authentication steps; receiving an indication of whether a current authentication plan exists in the authentication store, the current authentication plan having one or more authentication records each having current data associated with user access to a server at a previous layer of authentication than the target server and the authentication steps; transmitting a request for a current authentication plan to the user computer system; receiving the current authentication plan at the target server; comparing the stored authentication plan with the received current authentication plan to determine whether they match; and in response to a match between the stored authentication plan and the current authentication plan, authenticating the user.