We need to implement an authentication for users from one system to another. Previously we were using OAuth (user enters username/password and system get a temporary access key and a constant refresh key to refresh the access key), but now we have decided to improve security and stop using this system because the refresh key is constant. We are looking for a way that does not require the storage of any constant key to avoid a situation where somebody who steals the key and gets access to the system forever without us having a way to know about it and change the key.
A simple solution is to update the refresh key every defined period of time by requiring the user to login again. But our client wants users to log in only one time and shouldn't have more "problems" with authentication after that.
This situation seems mutually exclusive - the system should not have a constant key but should allow constant access. Is there any way to combine the two?