Не удалось выполнить проверку подлинности с помощью инструмента Insomnia

Я запустил этот пример сервера и зарегистрировал пользовательское приложение. Я пытаюсь просто увидеть что-то, по крайней мере, работает, но это довольно сложно. Я не уверен, что эта библиотека authlib полностью испорчена или я что-то делаю не так. Поэтому я заполняю все так и получаю ответ, что в шапке не указана Авторизация. Если я переключаюсь на вкладку "Заголовки" и добавляю заголовок с именем "Авторизация" и записываю что-то в поле значения, я получаю ответ, что предоставил недопустимый токен. Но, как я понимаю, Insomnia обрабатывает это и 1: получает токен 2: выполняет запрос, который я хочу (в данном случае GET:/api/me). Так в чем же проблема, почему эта библиотека не будет работать должным образом?

1 ответ

Решение

Я не знаю бессонницу. Но вот основная концепция OAuth2: https://docs.authlib.org/en/latest/basic/oauth2.html

Убедитесь, что вы создали свой клиент с client_credentials тип разрешения включен.

Затем отправьте сообщение как:

POST /oauth/token
Authorization: Basic base64(client_id:client_secret)

grant_type=client_credentials&scope=profile

Сервер вернет вам токен, затем вы можете использовать этот токен для запроса /api/me:

GET /api/me
Authorization: Bearer token-string

Проблема должна заключаться в том, как использовать бессонницу, которую я не знаю. Я предлагаю сначала прочитать документацию https://docs.authlib.org/en/latest/flask/2/index.html затем прочитать исходный код примера.


Отвечая @kcorlidy

^^^ для этого нужны аутентификация и токен, но сервер никогда не записывает токен в базу данных

Это делается с помощью:

save_token = create_save_token_func(db.session, OAuth2Token)
authorization = AuthorizationServer(
    query_client=query_client,
    save_token=save_token,  # NOTICE HERE
)
Другие вопросы по тегам