I would like to understand which would be the best strategy for authentication between two applications running at different places. My application client needs to call the Rest API of a server, and there are only few clients which connect to this server, but the number of request made by the clients are huge. The client is in java stack, and communication occurs over TLS 1.2 .
I have considered the following options
- Certificate based Mutual Authentication :- Here both server and client provide their certificate to validate, However, I find this approach to be complicated, though this seems to the best.
- Basic Auth :- I find this to be less secure and not recommended.
- OAuth :- I don't want to use any other auth provider for tokens.
- Pre shared Secret Key : A key is encrypted with timestamp and parameters, and this is passed as a token to validate.
Are there any other approaches which are suitable, and what would be best approach to use.