Всем привет. Помогите пожалуйста настроить сервер OAuth для умного дома.
Работаю по заданию производителей термостатов, есть ресурсный сервер и пользователи с зарегистрированными там термостатами.
Взял реализацию OAuth2 на Flask вот тут:
https://github.com/authlib/example-oauth2-server/tree/master/websiteНемного его допилил, чтобы на запрос авторизационного кода (для дальнейшего получения токена) он отдавал не только code и state, но и требуемые яндексом client_id и scope
Зарегал в нём клиента, занёс все необходимые настройки в Я.Диалогах.
Потом в Диалогах на закладке "Тестирование" пытаюсь протестировать связку моего OAuth2 сервера и диалога. Для этого нажимаю "Добавить устройство", "Другое устройство", "Привязать к Яндексу". Меня переадресовывает на мой OAuth2 сервер, я там ставлю галочку и жму Submit.
В логах сервера авторизации вот такое:
127.0.0.1 - - [15/Jan/2021 01:11:41] "GET /oauth/authorize?scope=profile&state=https%3A%2F%
2Fsocial.yandex.ru%2Fbroker2%2Fauthz_in_web%2Fa4b597226aac4e1f8d417b55329db6fe%2Fcallback&redirect_uri=https%3A%2F%
2Fsocial.yandex.net%2Fbroker%2Fredirect&response_type=code&client_id=SIaDyNWpX2Gvc03OH6zLvUep HTTP/1.0" 200 -
127.0.0.1 - - [15/Jan/2021 01:11:43] "POST /oauth/authorize?scope=profile&state=https%3A%2F%
2Fsocial.yandex.ru%2Fbroker2%2Fauthz_in_web%2Fa4b597226aac4e1f8d417b55329db6fe%2Fcallback&redirect_uri=https%3A%2F%
2Fsocial.yandex.net%2Fbroker%2Fredirect&response_type=code&client_id=SIaDyNWpX2Gvc03OH6zLvUep HTTP/1.0" 302 -
127.0.0.1 - - [15/Jan/2021 01:11:44] "POST /oauth/token HTTP/1.0" 401 -
В браузере меня перекидывает на страницу например
https://social.yandex.ru/broker2/authz_in_web/2c4b1478665f4944b6b8e223c3c7a6c9/bind где написано что произошла внутренняя ошибка
50059-6a280d1d01954956aaa85c7cb71a5c58-1610590111 (номер каждый раз разный)
Отладочная печать говорит, что страничка авторизации принимает вот такие параметры:
Code: Hpur1b02bO6uqwDasXJRkf6mXlQgmeWWVunUEbliZOFTywfY
State:
https://social.yandex.ru/broker2/authz_in_web/a4b597226aac4e1f8d417b55329db6fe/callbackClient_id: SIaDyNWpX2Gvc03OH6zLvUep
Scope: profile
И генерируемый UR выглядит вот так:
URI:
https://social.yandex.net/broker/redirect?code=Hpur1b02bO6uqwDasXJRkf6mXlQgmeWWVunUEbliZOFTywfY&state=https%3A%2F%2Fsocial.yandex.ru%2Fbroker2%2Fauthz_in_web%2Fa4b597226aac4e1f8d417b55329db6fe%2Fcallback&client_id=SIaDyNWpX2Gvc03OH6zLvUep&scope=profileПоддержка предлагает перепроверить настройки SSL на вебсервере, но у меня там проверенная годами связка nginx и letsencrypt. Все утилиты проверки тоже говорят, что всё окей.
Связка между nginx и flask происходит по HTTP, но это ведь не должно быть проблемой, верно?
Есть ли какие-то идеи? Может кто-то сталкивался с чем-то похожим?
Спасибо.