2016-04-05 1 views
1

Как сервер ресурсов, я хотел бы предоставить пользователям больше контроля над своими ресурсами.OAuth 2 - как определить разрешение динамического ресурса?

Например, рассмотрим У меня есть облако файловой системы, поддерживающей OAuth 2.

Пользователь может предоставить разрешение на доступ к файлам для клиента от его имени.

Я бы хотел, чтобы сервер ресурсов предлагал доступ к определенной папке, например, только фотографии, а не документы.

Имена папок - это динамический ресурс, так как он варьируется среди пользователей.

Как я могу обрабатывать авторизацию динамического ресурса? Динамические области?

Также, если область действия динамическая, как клиент знает, чтобы запросить ее?

* Не удалось найти его в the spec :(

ответ

1

Совсем недавно мне пришлось знакомиться с OAuth/РСИН, и теперь я перед тем же вопросом - вот что я мог думать так далеко -

  • вы, конечно, есть причина экстернализовать безопасности (AuthN, AuthZ) - вот почему вы используете OAuth вы действительно хотите, чтобы ваш сервер авторизации, чтобы узнать о ресурсах, имеющихся в вашем приложении
  • областях применения -.?, насколько Я понял - контролировать доступ к API, а не «ресурсы» в стандартном значении - даже t hough я читал о «ресурсах» набранных областях, но они снова предоставляли доступ к API.
  • Если у вас есть ресурсы (файлы), с которыми вы хотите контролировать доступ, вам, вероятно, лучше будет обращаться с ним внутри вашего приложения - и, при необходимости, запросить список известных клиентов с сервера Auth.

Так я собираюсь попробовать сделать это для своего собственного приложения в любом случае - это действительно удивительно, чтобы не найти никаких ресурсов об этом в Интернете.

1

Документ rfc6749, который является спецификацией OAuth 2.0, определяет способ расширения OAuth 2 с использованием дополнительных параметров (rfc6749 # section-8.2). Итак, если вы хотите, чтобы решить эту проблему с помощью OAuth, вы могли бы использовать этот подход или что-то подобное:

  • вы определяете новый параметр для запроса авторизации, чтобы указать ресурс (EX: folderID = XXXXX)
  • Во время запроса авторизации клиент может ОПЦИОНАЛЬНО указать ресурс с использованием нового параметра
  • Если указанный параметр указан, ваш сервер авторизации будет генерировать «динамическую область», которая должна быть подписана владельцем ресурса
  • , если параметр не указывается, владелец ресурса может выбрать ресурс, который хочет передать, и t сервер авторизации может генерировать связанную «динамическую область» (этот сценарий подразумевает, что сервер ресурсов каким-то образом задействован во время потока авторизации)
  • Когда области определены и подписаны владельцем ресурса, они передаются клиенту (он должен быть в состоянии вывести идентификатор ресурса из сферы, если последний был определен владелец ресурса)
  • Когда клиент запрашивает ресурс, сервер ресурсов также должен убедиться в том, что сфера включает в себя запрошенный ресурс

Помните, что такой подход работает лучше, если количество ресурсов на пользователя не очень велико (в противном случае вы можете быть затоплены областями).

Другим способом может быть добавление дополнительного слоя авторизации за слоем OAuth. Этот дополнительный слой отслеживает отношение клиентских/доступных ресурсов.