Реализовать авторизацию по кратосу #6

Open
skeris wants to merge 0 commits from kratos_auth into dev
Owner

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

тем не менее, пока у тебя есть возможность плавно и спокойно этим заняться, надо заменить в этой ветке получение userId из токена jwt на то что предполагает кратос, и покрыть этот вопрос минимальными тестами - работает и ладно. по факту, в рамках этой задачи надо чисто заменить middleware на получение айдишника и данных от кратоса. каких данных - не знаю, приложи к этой задаче, что мы ещё можем получить. а айдишник для идентификации пользователя прям нужен

как только будут на проде закрыты дырки по овнершипу - надо будет менять старую дырявую авторизацию на новый модный кратос. процесс замены мне пока не до конца ясен, потому как там надо как то будет перегнать всё и вся в новую базу. тем не менее, пока у тебя есть возможность плавно и спокойно этим заняться, надо заменить в этой ветке получение userId из токена jwt на то что предполагает кратос, и покрыть этот вопрос минимальными тестами - работает и ладно. по факту, в рамках этой задачи надо чисто заменить middleware на получение айдишника и данных от кратоса. каких данных - не знаю, приложи к этой задаче, что мы ещё можем получить. а айдишник для идентификации пользователя прям нужен
pasha1coil was assigned by skeris 2025-04-27 22:36:26 +00:00
Member

изображение.png

эта строка на самом деле пугает

![изображение.png](/attachments/8d663a52-6a09-41b0-8385-ef6b88624f72) эта строка на самом деле пугает
Member

реализация мидлвара имеется, с использованием jwt и по сессии из кук

вот тут два их

http://gitea.pena/PenaSide/OryKratos/src/branch/staging/middleware/middleware.go

тут как раз получаем id из Identy который менять и выбирать нельзя, вооот в принципе мидлвар есть
я тестил работает как с кипером так и просто с кратосом

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

реализация мидлвара имеется, с использованием jwt и по сессии из кук вот тут два их http://gitea.pena/PenaSide/OryKratos/src/branch/staging/middleware/middleware.go тут как раз получаем id из Identy который менять и выбирать нельзя, вооот в принципе мидлвар есть я тестил работает как с кипером так и просто с кратосом тут скорее понадобятся интергационные тесты через докер я запилю их в деплойменте от текущей реализации в стейдж ветке
Member

по вопросу, что можем помимо ид получить:

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

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

тут к примеру могу дать вот только то что у меня удалось сделать - http://gitea.pena/PenaSide/OryKratos/src/branch/staging/config_oauthkeeper/oathkeeper.yml

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

по вопросу, что можем помимо ид получить: если пользоваться первым мидлваром, который использует клиента то там можно получить что угодно связанное с пользователем по его сессии, там даже перечислять я думаю смысла нет, но самая важная штучка это - [identity](https://www.ory.sh/docs/identities) вооот, что касается кипера, если юзать второй вариант, то мы получить через мидлвар можем только то что указали в правилах, можно конечно и сессию туда складывать, а потом ходить с ней уже с помощью ори.Клиента, но не знаю, кажется юзелес вариантом, можно в конфиге все это обыграть. тут к примеру могу дать вот только то что у меня удалось сделать - http://gitea.pena/PenaSide/OryKratos/src/branch/staging/config_oauthkeeper/oathkeeper.yml это мутаторы (еще и + к нему аутентификатор который как я понял делает тот самый запрос на вериф) - а именно хедер тут получился, довольно простецкий вариант, но хоть что то в тг с тобой обсуждали что в принципе жвтишка тут и не нужна раз есть сессия поэтому я этот вариант не доделывал, а оставил просто на всякий случай
Member

тест реализовал - http://gitea.pena/PenaSide/OryKratos/src/branch/staging/tests/integration

довольно простой с данными которые ожидаем и нет

по сути в кор сервисе и остальных остается только тянуть этот мидлвар

го как выберем подходящий будем тянуть?

там их два, один по сессии кратоса, второй по киперу

тест реализовал - http://gitea.pena/PenaSide/OryKratos/src/branch/staging/tests/integration довольно простой с данными которые ожидаем и нет по сути в кор сервисе и остальных остается только тянуть этот мидлвар го как выберем подходящий будем тянуть? там их два, один по сессии кратоса, второй по киперу
Some checks failed
Deploy / CreateImage (push) Successful in 3m0s
Deploy / ValidateConfig (push) Successful in 23s
Deploy / MigrateDatabase (push) Successful in 39s
Deploy / DeployService (push) Successful in 23s
Lint / Lint (push) Failing after 1m57s
This branch is already included in the target branch. There is nothing to merge.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin kratos_auth:kratos_auth
git checkout kratos_auth
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: SQuiz/core#6
No description provided.