Протокол OAuth v2 для связи между проверкой подлинности и ресурсов сервера


У меня возникли некоторые проблемы с пониманием того, как работает OAUTH-v2.

The OAuth версия 2 spec гласит:

  1. Доступ К Защищенным Ресурсам

    клиент получает доступ защищенный ресурсов путем предоставления доступа
    токен для сервера ресурсов. Этот сервер ресурсов должен проверить
    маркер доступа и убедитесь, что он не истек срок действия и что его область охватывает
    запрошенный ресурс. Метод используется сервером ресурсов для
    проверить маркер доступа (а также любые ответы на ошибки) являются за объем этой спецификации, но вообще связано или координация между ресурсами сервер и авторизация
    сервер
    .

Как это взаимодействие между сервером ресурсов и сервером авторизации работает в практика?

  • как работает сервер ресурсов определите, что маркер доступа это полученный действителен?
  • каким образом сервер ресурсов извлекает разрешенное область от маркера, чтобы увидеть, должен ли быть предоставлен доступ к определенному ресурсу? Кодируется ли область в маркере доступа, или сервер ресурсов сначала должен связаться с сервером авторизации?
  • как обеспечивается доверие между сервером ресурсов и сервером авторизации установили?

атрибуты маркера доступа и методы, используемые для доступа к защищенным ресурсы есть выходит за рамки данной спецификация и определяются технические характеристики спутника.

может кто-нибудь привести примеры для атрибутов токенов?

2 77

2 ответа:

причина, по которой это выходит за рамки спецификации, заключается в широком диапазоне способов достижения этой связи между двумя объектами. Главный вопрос заключается в том, насколько сложным является ваше развертывание.

например, есть ли у вас один сервер, управляющий аутентификацией и доступом, и набор дискретных служб, каждый из которых имеет свои собственные серверы, обслуживающие вызовы API? Или, у вас есть только одна коробка с одним веб-сервером, который обрабатывает аутентификации/авторизации и API звонки?

в случае одного окна не так много требуется, поскольку объект, выдающий токены, совпадает с тем, который их проверяет. Вы можете реализовать маркеры для использования ключа таблицы базы данных и поиска записи в базе данных (или кэше памяти) по каждому запросу, или вы можете кодировать область, идентификатор пользователя и другую информацию непосредственно в маркер и шифровать его с помощью симметричного или асимметричного алгоритма.

все становится немного сложнее при работе с распределенным окружающая среда, но не намного. Маркеры по-прежнему выдаются на сервере авторизации, но серверу ресурсов требуется способ их проверки. Он может сделать это, сделав внутренний API доступным для сервера ресурсов, чтобы попросить сервер авторизации "разрешить" токен (который может быть быстрым в локальной среде), или два могут установить пару открытого/закрытого ключа или симметричный секрет и использовать это для шифрования всего, что нужно серверу ресурсов в токен.

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

одним из примеров API сервера авторизации ресурсов является тот, который находится в Сайт Разработчиков Google.
Он не указывает формат маркера доступа, хотя, но ответ кажется довольно универсально полезным.