Skip to content

Commit 27372ce

Browse files
authored
Apply clock drift to SubjectConfirmationData and AuthnStatement (#385)
* Apply clock drift to SubjectConfirmationData * Apply clock drift to AuthnStatement
1 parent df213c2 commit 27372ce

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/onelogin/saml2/response.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ def is_valid(self, request_data, request_id=None, raise_exceptions=False):
180180

181181
# Checks the session Expiration
182182
session_expiration = self.get_session_not_on_or_after()
183-
if session_expiration and session_expiration <= OneLogin_Saml2_Utils.now():
183+
if session_expiration and session_expiration + OneLogin_Saml2_Constants.ALLOWED_CLOCK_DRIFT <= OneLogin_Saml2_Utils.now():
184184
raise OneLogin_Saml2_ValidationError(
185185
"The attributes have expired, based on the SessionNotOnOrAfter of the AttributeStatement of this Response", OneLogin_Saml2_ValidationError.SESSION_EXPIRED
186186
)
@@ -206,12 +206,12 @@ def is_valid(self, request_data, request_id=None, raise_exceptions=False):
206206
nooa = sc_data.get("NotOnOrAfter", None)
207207
if nooa:
208208
parsed_nooa = OneLogin_Saml2_Utils.parse_SAML_to_time(nooa)
209-
if parsed_nooa <= OneLogin_Saml2_Utils.now():
209+
if parsed_nooa + OneLogin_Saml2_Constants.ALLOWED_CLOCK_DRIFT <= OneLogin_Saml2_Utils.now():
210210
continue
211211
nb = sc_data.get("NotBefore", None)
212212
if nb:
213213
parsed_nb = OneLogin_Saml2_Utils.parse_SAML_to_time(nb)
214-
if parsed_nb > OneLogin_Saml2_Utils.now():
214+
if parsed_nb > OneLogin_Saml2_Utils.now() + OneLogin_Saml2_Constants.ALLOWED_CLOCK_DRIFT:
215215
continue
216216

217217
if nooa:

0 commit comments

Comments
 (0)