2525
2626from firebase_admin import credentials
2727
28- # Provided for overriding during tests.
29- _request = transport .requests .Request ()
3028
3129# ID token constants
3230ID_TOKEN_ISSUER_PREFIX = 'https://securetoken.google.com/'
3634# Session cookie constants
3735COOKIE_ISSUER_PREFIX = 'https://session.firebase.google.com/'
3836COOKIE_CERT_URI = 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/publicKeys'
39- MIN_SESSION_COOKIE_DURATION_SECONDS = datetime .timedelta (minutes = 5 ).total_seconds ()
40- MAX_SESSION_COOKIE_DURATION_SECONDS = datetime .timedelta (days = 14 ).total_seconds ()
37+ MIN_SESSION_COOKIE_DURATION_SECONDS = int ( datetime .timedelta (minutes = 5 ).total_seconds () )
38+ MAX_SESSION_COOKIE_DURATION_SECONDS = int ( datetime .timedelta (days = 14 ).total_seconds () )
4139
4240# Custom token constants
43- MAX_TOKEN_LIFETIME_SECONDS = datetime .timedelta (hours = 1 ).total_seconds ()
41+ MAX_TOKEN_LIFETIME_SECONDS = int ( datetime .timedelta (hours = 1 ).total_seconds () )
4442FIREBASE_AUDIENCE = ('https://identitytoolkit.googleapis.com/google.'
4543 'identity.identitytoolkit.v1.IdentityToolkit' )
4644RESERVED_CLAIMS = set ([
@@ -152,6 +150,7 @@ class TokenVerifier(object):
152150 """Verifies ID tokens and session cookies."""
153151
154152 def __init__ (self , app ):
153+ self .request = transport .requests .Request ()
155154 self ._id_token_verifier = _JWTVerifier (
156155 project_id = app .project_id , short_name = 'ID token' ,
157156 operation = 'verify_id_token()' ,
@@ -164,10 +163,10 @@ def __init__(self, app):
164163 cert_url = COOKIE_CERT_URI , issuer = COOKIE_ISSUER_PREFIX )
165164
166165 def verify_id_token (self , id_token ):
167- return self ._id_token_verifier .verify (id_token )
166+ return self ._id_token_verifier .verify (id_token , self . request )
168167
169168 def verify_session_cookie (self , cookie ):
170- return self ._cookie_verifier .verify (cookie )
169+ return self ._cookie_verifier .verify (cookie , self . request )
171170
172171
173172class _JWTVerifier (object ):
@@ -185,7 +184,7 @@ def __init__(self, **kwargs):
185184 else :
186185 self .articled_short_name = 'a {0}' .format (self .short_name )
187186
188- def verify (self , token ):
187+ def verify (self , token , request ):
189188 """Verifies the signature and data for the provided JWT."""
190189 token = token .encode ('utf-8' ) if isinstance (token , six .text_type ) else token
191190 if not isinstance (token , six .binary_type ) or not token :
@@ -258,7 +257,7 @@ def verify(self, token):
258257
259258 verified_claims = google .oauth2 .id_token .verify_token (
260259 token ,
261- request = _request ,
260+ request = request ,
262261 audience = self .project_id ,
263262 certs_url = self .cert_url )
264263 verified_claims ['uid' ] = verified_claims ['sub' ]
0 commit comments