Жетон доступа к двери
Я пытаюсь создать OAuth2-провайдера с Doorkeeper, и я хотел протестировать все существующие потоки, но застрял с первой попытки.
Я пытаюсь проверить поток кода авторизации. Все отлично работает при получении кода авторизации, но как только я пытаюсь получить токен доступа, что-то не так. Ниже упомянуты некоторые из шагов.
describe 'when sends an access token request' do
let(:access_params) do
{ grant_type: 'authorization_code',
code: authorization_code,
redirect_uri: application.redirect_uri }
end
let(:access_uri) { '/oauth/token' }
before { page.driver.post access_uri, access_params }
it 'returns valid json' do
pp page.source
end
Я ожидал JSON с окончательным токеном доступа, но я получил эту ошибку. Я очень хорошо проверил клиента и параметры. Мне кажется, все в порядке.
{"error":"invalid_client","error_description":"Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method."}
Можете ли вы помочь мне понять, чего не хватает? Спасибо
1 ответ
Решение
Я наконец получил это работать. Я упустил один важный аспект в спецификациях OAuth2, где клиент должен идентифицировать себя, используя базовую аутентификацию. Я решил добавить его до публикации, и он работал довольно хорошо.
before do
page.driver.browser.authorize application.uid, application.secret
page.driver.post access_uri, access_params
end