Constructor.
Parameters: key - to identify if this object made by an authorised client Parameters: principal - the principal (typically a UserDetails) Parameters: authorities - the authorities granted to the principal throws: IllegalArgumentException - if a null was passed