Hi psv,
This behavior you described is by OAuth 2 design, wasn't really CAS doing something weird.
For your above step, after your client get the access_token, you are suppose to store it somewhere (maybe in session or somewhere else), instead of throwing it away and getting a new access_token everytime.
After you stored it, you can use the stored access_token and call to OAuth user_info endpoint, and get the user profile.
So. then what is the "expires_in" stands for? It is stands for the valid storing duration of each access_token, after the duration, your access_token will be invalid, and need to call to /accessToken to renew.
Since this is OAuth behaivor, I highly doubt there are any setting to allow your described use case to come true.
Actually, after you get a new acces_token, you can still use both the new and old one to get user profile. So I guess if you really don't want to store the access_token, just get a new one everytime is still valid, although kind of resiource intensive...
Hope this helps!
Cheers!
- Andy