Загрузка файла с сервера ресурсов в браузер (OAuth2)
Я внедряю OAuth2 (на 100% соответствующий спецификациям) в проекте, к которому я был назначен.
Допустим, у меня есть файл с именем'file.txt "на сервере ресурсов.
Клиент хочет загрузить файл. Предположим, что загрузка файлов выполняется через другой сервер, dl.example.com
, потому что может быть несколько серверов ресурсов , и общая точка доступа для загрузки будет более аккуратным подходом. (?)
Поэтому, если клиент хочет загрузить файл и вывести его на браузер, какой процесс должен быть предпочтительным?
Если я приму следующий подход:
1) Клиент делает запрос на dl.example.com?access_token=123123&fpath=file.txt
2) dl.example.com
делает запрос на соответствующий сервер ресурсов
3) Сервер ресурсов отправляет файл на dl.example.com
4) dl.example.com
отправляет файл клиенту
5) клиент выводит файл в браузер для загрузки
Будут дополнительные накладные расходы на сетевой ввод-вывод.
Не является ли этот подход правильным решением? Как "крупные игроки", такие как Dropbox, делают это? Я проверил URL-адрес Dropbox: dl-web.dropbox.com/*whatever*
. Является ли подход Dropbox полностью иным, чем описанный выше?
1 answers
Я бы не стал проксировать передачу файлового ресурса через сервер dl.example.com
.
Здесь ключом является access_token. Если серверы ресурсов сами поддерживают OAuth2 и имеют доступ к хранилищу для access_tokens, вы можете ответить перенаправлением статуса 303 с исходного запроса на фактический адрес необходимого ресурса:
Original Request: https://dl.example.com?access_token=123123&fpath=file.txt
Response: 303 https://resource.server.com/path/file.txt?access_token=123123
Вы можете пометить Curl, чтобы следить за перенаправлениями. Если вы разрабатываете клиентский SDK для переноса доступа, все это может быть невидимым.