I can't find any documentation which explains if and how to modify the expiry time of access and identity tokens for AWS Cognito User Pools.
The documentation specifies that by default expires 1h after the emission.
Is there a way to modify the expiry time?
This is currently not possible to configure for your user pool. They are set to one hour for everyone.
Cognito uses the OAuth 2.0 Specification. In order to renew an expired token, you will need to use the Refresh Token value to get a new Id Token.
It's really quite simple. Further information in the Cognito documentation to Refresh Tokens
You can configure token expiration from cognito console
General Settings
/App Clients
/{your app}
/Show Details
/Refresh token expiration (days)
It seems that currently for the web client there is no option for something less than a day (quite strange).
If you use Mobile SDK then
I presume the question is how to get get granular control of Cognito session termination. There is a way to do this. But first lets recap how Cognito session management works:
So what can you to to get better control of Cognito session length? The answer is to insert a filter in your http request stack that evaluates the request - if the user must be logged out for whatever reason, issue a 302 redirect to the Cognito logout endpoint (and clear your session cookies too).
This is what we do in Kubernetes with Envoy (using a proxy), and also Spring. It also allows you to wire in logic that immediately revokes access to a user before their 1 hour access token expires.
See https://docs.aws.amazon.com/cognito/latest/developerguide/logout-endpoint.html