Загрузка файла с сервера ресурсов в браузер (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 полностью иным, чем описанный выше?

Author: Abhishek Goyal, 2014-08-15

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 для переноса доступа, все это может быть невидимым.

 2
Author: Ray, 2014-08-15 16:08:14