Ситуация: я запускаю приложение Django в Интернете, где вошедшие в систему пользователи могут также загружать файлы .pdf (непубличные, с конкретными ограничениями, в зависимости от прав пользователя). Наиболее удобный способ сделать это (например, на этапе S3) - использовать предварительно подписанный URL-адрес с ограничением по времени, поскольку он сразу открывается в браузере, плюс серверу приложений не нужно обрабатывать дополнительный трафик.
Проблема: Backblaze B2, очевидно, не предлагает явного метода для создания предопределенных URL-адресов для загрузки непубличных файлов непосредственно в браузере.
Создание URL-адреса API и токена авторизации и выборка файла из хранилища объектов происходит на уровне сервера приложений, и этот процесс не предоставляется «обычному» пользователю.
Но, в конце концов, операция API "b2_download_file_by_name" просто использует запрос GET, что означает, что я могу добавить токен авторизации в URL запроса, используя "? Authorization = 123xyz ........". Таким образом, я получаю предварительно назначенный URL, который отлично работает в браузере, чтобы разрешить доступ к определенному непубличному файлу в течение ограниченного времени. (Обратите внимание: загрузка B2 может быть ограничена файлами с определенными префиксами [например, псевдопапками s3], но если указанный «префикс» достаточно длинный, я могу сделать токен аутентификации специфичным для одного файла.)
Вопрос: Как я писал выше, обычно токен авторизации не предоставляется пользователю. Теперь, если я сделаю URL видимым, означает ли это угрозу безопасности? Другими словами, может ли пользователь, у которого есть один или несколько токенов, извлечь общий ключ доступа из токена или токен достаточно хорошо зашифрован, чтобы избежать этого?