diff --git a/awx/api/conf.py b/awx/api/conf.py index 27f255c68b..688aad162f 100644 --- a/awx/api/conf.py +++ b/awx/api/conf.py @@ -38,12 +38,15 @@ register( 'OAUTH2_PROVIDER', field_class=OAuth2ProviderField, default={'ACCESS_TOKEN_EXPIRE_SECONDS': oauth2_settings.ACCESS_TOKEN_EXPIRE_SECONDS, - 'AUTHORIZATION_CODE_EXPIRE_SECONDS': 600}, + 'AUTHORIZATION_CODE_EXPIRE_SECONDS': oauth2_settings.AUTHORIZATION_CODE_EXPIRE_SECONDS, + 'REFRESH_TOKEN_EXPIRE_SECONDS': oauth2_settings.REFRESH_TOKEN_EXPIRE_SECONDS}, label=_('OAuth 2 Timeout Settings'), help_text=_('Dictionary for customizing OAuth 2 timeouts, available items are ' '`ACCESS_TOKEN_EXPIRE_SECONDS`, the duration of access tokens in the number ' - 'of seconds, and `AUTHORIZATION_CODE_EXPIRE_SECONDS`, the duration of ' - 'authorization codes in the number of seconds.'), + 'of seconds, `AUTHORIZATION_CODE_EXPIRE_SECONDS`, the duration of ' + 'authorization codes in the number of seconds, and `REFRESH_TOKEN_EXPIRE_SECONDS`, ' + 'the duration of refresh tokens, after expired access tokens, ' + 'in the number of seconds.'), category=_('Authentication'), category_slug='authentication', ) diff --git a/awx/api/fields.py b/awx/api/fields.py index 3197e80c55..ace0667a9a 100644 --- a/awx/api/fields.py +++ b/awx/api/fields.py @@ -80,7 +80,7 @@ class OAuth2ProviderField(fields.DictField): default_error_messages = { 'invalid_key_names': _('Invalid key names: {invalid_key_names}'), } - valid_key_names = {'ACCESS_TOKEN_EXPIRE_SECONDS', 'AUTHORIZATION_CODE_EXPIRE_SECONDS'} + valid_key_names = {'ACCESS_TOKEN_EXPIRE_SECONDS', 'AUTHORIZATION_CODE_EXPIRE_SECONDS', 'REFRESH_TOKEN_EXPIRE_SECONDS'} child = fields.IntegerField(min_value=1) def to_internal_value(self, data): diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index f81b97a325..a2b1e9926b 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -338,7 +338,8 @@ OAUTH2_PROVIDER_ACCESS_TOKEN_MODEL = 'main.OAuth2AccessToken' OAUTH2_PROVIDER_REFRESH_TOKEN_MODEL = 'oauth2_provider.RefreshToken' OAUTH2_PROVIDER = {'ACCESS_TOKEN_EXPIRE_SECONDS': 31536000000, - 'AUTHORIZATION_CODE_EXPIRE_SECONDS': 600} + 'AUTHORIZATION_CODE_EXPIRE_SECONDS': 600, + 'REFRESH_TOKEN_EXPIRE_SECONDS': 2628000} ALLOW_OAUTH2_FOR_EXTERNAL_USERS = False # LDAP server (default to None to skip using LDAP authentication).