diff --git a/src/firebase_functions/https_fn.py b/src/firebase_functions/https_fn.py index 84c5659..1115bf2 100644 --- a/src/firebase_functions/https_fn.py +++ b/src/firebase_functions/https_fn.py @@ -347,7 +347,7 @@ class CallableRequest(_typing.Generic[_core.T]): def _on_call_handler(func: _C2, request: Request, - enforce_app_check: bool) -> Response: + enforce_app_check: bool, auth: bool = True) -> Response: try: if not _util.valid_on_call_request(request): _logging.error("Invalid request, unable to process.") @@ -357,29 +357,30 @@ def _on_call_handler(func: _C2, request: Request, data=_json.loads(request.data)["data"], ) - token_status = _util.on_call_check_tokens(request) - - if token_status.auth == _util.OnCallTokenState.INVALID: - raise HttpsError(FunctionsErrorCode.UNAUTHENTICATED, - "Unauthenticated") - - if enforce_app_check and token_status.app in ( - _util.OnCallTokenState.MISSING, _util.OnCallTokenState.INVALID): - raise HttpsError(FunctionsErrorCode.UNAUTHENTICATED, - "Unauthenticated") - if token_status.app == _util.OnCallTokenState.VALID and token_status.app_token is not None: - context = _dataclasses.replace( - context, - app=AppCheckData(token_status.app_token["sub"], - token_status.app_token), - ) - - if token_status.auth_token is not None: - context = _dataclasses.replace( - context, - auth=AuthData(token_status.auth_token["uid"], - token_status.auth_token), - ) + if auth: + token_status = _util.on_call_check_tokens(request) + + if token_status.auth == _util.OnCallTokenState.INVALID: + raise HttpsError(FunctionsErrorCode.UNAUTHENTICATED, + "Unauthenticated") + + if enforce_app_check and token_status.app in ( + _util.OnCallTokenState.MISSING, _util.OnCallTokenState.INVALID): + raise HttpsError(FunctionsErrorCode.UNAUTHENTICATED, + "Unauthenticated") + if token_status.app == _util.OnCallTokenState.VALID and token_status.app_token is not None: + context = _dataclasses.replace( + context, + app=AppCheckData(token_status.app_token["sub"], + token_status.app_token), + ) + + if token_status.auth_token is not None: + context = _dataclasses.replace( + context, + auth=AuthData(token_status.auth_token["uid"], + token_status.auth_token), + ) instance_id = request.headers.get("Firebase-Instance-ID-Token") if instance_id is not None: diff --git a/src/firebase_functions/tasks_fn.py b/src/firebase_functions/tasks_fn.py index 2d366b6..7a9482a 100644 --- a/src/firebase_functions/tasks_fn.py +++ b/src/firebase_functions/tasks_fn.py @@ -53,7 +53,7 @@ def on_task_dispatched_decorator(func: _C): @_functools.wraps(func) def on_task_dispatched_wrapped(request: Request) -> Response: - return _on_call_handler(func, request, enforce_app_check=False) + return _on_call_handler(func, request, enforce_app_check=False, auth=False) _util.set_func_endpoint_attr( on_task_dispatched_wrapped,