diff options
author | Nikos Sklikas <nsklikas@admin.grnet.gr> | 2021-03-22 16:38:38 +0200 |
---|---|---|
committer | Nikos Sklikas <nsklikas@admin.grnet.gr> | 2021-06-03 18:00:12 +0300 |
commit | 595bf5f98ab785aa64840ed469fb1b9dc09bdb9e (patch) | |
tree | 11d8e9fe68726582cba3ce6f1d4420e6db5d135b /oauthlib | |
parent | 5a1e7483749229e01442cfb969916a14a2078789 (diff) | |
download | oauthlib-595bf5f98ab785aa64840ed469fb1b9dc09bdb9e.tar.gz |
Add support for refreshing ID Tokens
Diffstat (limited to 'oauthlib')
-rw-r--r-- | oauthlib/openid/connect/core/grant_types/__init__.py | 1 | ||||
-rw-r--r-- | oauthlib/openid/connect/core/grant_types/refresh_token.py | 36 |
2 files changed, 37 insertions, 0 deletions
diff --git a/oauthlib/openid/connect/core/grant_types/__init__.py b/oauthlib/openid/connect/core/grant_types/__init__.py index 887a585..8dad5f6 100644 --- a/oauthlib/openid/connect/core/grant_types/__init__.py +++ b/oauthlib/openid/connect/core/grant_types/__init__.py @@ -10,3 +10,4 @@ from .dispatchers import ( ) from .hybrid import HybridGrant from .implicit import ImplicitGrant +from .refresh_token import RefreshTokenGrant diff --git a/oauthlib/openid/connect/core/grant_types/refresh_token.py b/oauthlib/openid/connect/core/grant_types/refresh_token.py new file mode 100644 index 0000000..386b57c --- /dev/null +++ b/oauthlib/openid/connect/core/grant_types/refresh_token.py @@ -0,0 +1,36 @@ +""" +oauthlib.openid.connect.core.grant_types +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +""" +import logging + +from oauthlib.oauth2.rfc6749.grant_types.refresh_token import ( + RefreshTokenGrant as OAuth2RefreshTokenGrant, +) + +from .base import GrantTypeBase + +log = logging.getLogger(__name__) + + +class RefreshTokenGrant(GrantTypeBase): + + def __init__(self, refresh_id_token=True, request_validator=None, **kwargs): + self.refresh_id_token = refresh_id_token + self.proxy_target = OAuth2RefreshTokenGrant( + request_validator=request_validator, **kwargs) + self.register_token_modifier(self.add_id_token) + + def add_id_token(self, token, token_handler, request): + """ + Construct an initial version of id_token, and let the + request_validator sign or encrypt it. + + The authorization_code version of this method is used to + retrieve the nonce accordingly to the code storage. + """ + # Treat it as normal OAuth 2 auth code request if openid is not present + if not self.refresh_id_token: + return token + + return super().add_id_token(token, token_handler, request) |