An interface that describes the common authentication strategy.
An authentication strategy is a class with an ‘authenticate’ method that verifies a user’s credentials and returns the corresponding user profile.
export interface AuthenticationStrategy
|The ‘name’ property is a unique identifier for the authentication strategy ( for example : ‘basic’, ‘jwt’, etc)
|The ‘authenticate’ method takes in a given request and returns a user profile which is an instance of ‘UserProfile’. (A user profile is a minimal subset of a user object) If the user credentials are valid, this method should return a ‘UserProfile’ instance. If the user credentials are invalid, this method should throw an error If the user credentials are missing, this method should throw an error, or return ‘undefined’ and let the authentication action deal with it.