Source code for latch_cli.auth.csrf

import secrets

from latch_cli.auth.utils import _base64url_encode


[docs]class CSRFState: """Context manager to hold state preventing CSRF attacks. Outlined in detail `here`_, this object holds a state string as a client-side protection against CSRF attacks. Used in conjunction with PKCE verifier/challenge protection, which is a server-side security mechanism. Example usage: :: with CSRFState() as csrf: oauth2_flow = OAuth2(..., csrf, ...) .. _here: https://spring.io/blog/2011/11/30/cross-site-request-forgery-and-oauth2 """ def __init__(self): self.state = _base64url_encode(secrets.token_bytes(32)) def __enter__(self, *args): return self def __exit__(self, *args): ...