2015-01-27 3 views
4

Я не могу понять разницу между Token и Grant в Doorkeeper. В какой момент Doorkeeper создает грант доступа и когда токен доступа? Документация, похоже, ничего не говорит об этом, и теперь я читаю код, но не дюжина строк.Разница между грантом доступа и токеном доступа

+0

Можете ли вы разместить ссылку на обе документации? Я имею в виду одну ссылку в документации, говорящую о Access Grant, а другую - о токене доступа. –

+0

Нет документации. Я вижу их только в коде, но не упоминаю в документах. – Tute

ответ

9

Я рекомендую также прочитать documentation of oauth2
Как я понимаю, Doorkeeper основан на протоколе, описанном в этой документации.

В привратнике вы получите первый грант доступа, а затем токен доступа.

Доступ к гранту обычно остается очень коротким (по умолчанию в привратнике 10 минут). Вы получите это, запросив GET для api-url/oauth/authorize (не забудьте указать client_id, redirect_uri и response_type в качестве параметра. Response_type будет иметь значение «code»).

После того, как пользователь разрешит приложениям (пользователь нажимает кнопку «разрешить»), швейцар вернет грант доступа в качестве параметра в возвращаемом URL-адресе. Получите этот код, и теперь вы можете использовать его, чтобы сделать запрос POST на api-url/oauth/token, чтобы получить ваш access_token и refresh_token.

Используя access_token, вы можете получить ресурсы API в течение ограниченного времени (по умолчанию Doorkeeper - один час, если я не ошибаюсь). Когда acces_tooken истекло, используйте refresh_token, чтобы получить новый access_token и так далее.

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

Надеюсь, это поможет.

+2

Я бы также добавил, что важными вещами является то, что код гранта передается через ящик через веб-агент (обычно веб-браузер), который не доверяет приложение. Затем он использует этот код в сочетании с тайной, отправленной над этим запросом POST, упомянутым выше, для надежного получения маркера. – peterept

2

Я предполагаю, что вы говорите о потоке веб-сервера, поскольку вы используете камень Ruby в Rails-приложении (как вы знаете, есть 4 потока).

Обычно в потоке веб-сервера Грант - это момент, когда пользователь нажимает на ссылку для разрешения авторизации: ему будет предложено авторизировать приложение для чтения/записи данных.

Если согласие предоставлено, приложение получит временный код. С помощью этого кода в фоновом режиме приложение запросит у поставщика услуг токен.

Затем, только с Token, приложение сможет использовать API-интерфейсы поставщика услуг.

Смежные вопросы