Giter Site home page Giter Site logo

auth_sprint_2's People

Contributors

ceratuz avatar lapparrr avatar

Watchers

 avatar

auth_sprint_2's Issues

Обработка исключения для джанго

В файле admin-service/app/users/auth.py в строке с response = requests.post... может быть выброшено исключение, его нужно перехватить и обработать. Можно даже использовать backoff.

auth: Избавиться в анотации от изменяемый значений по умолчанию

В файле auth-service/app/src/services/auth.py у вас два раз встречается user_claims: Optional[dict] = {}.
Крайне рекомендую ознакомиться со статьей https://florimond.dev/en/posts/2018/08/python-mutable-defaults-are-the-source-of-all-evil/
Присваивать в качестве параметра по умолчанию изменяемый объект - это всегда опасно.

Реализовать изящную деградацию Auth-сервиса

При создании интеграции не забудьте учесть изящную деградацию Auth-сервиса. Auth сервис — один из самых нагруженных, потому что в него ходят большинство сервисов сайта. И если он откажет, сайт отказать не должен. Обязательно учтите этот сценарий в интеграциях с Auth-сервисом.

Авторизация для социальных сетей

У вас не предусмотрена регистрация через соцсети, только лишь поиск по email в базе пользователей.
Смотрите, OAuth2 - протокол авторизации, но не аутентификации, и про это написано в теории и рассказано почему. Т.е. он подтверждает, что у этого пользователя есть какие-то права в соцсети (нам достаточно того, что соцсеть подтвердит нам, что он там есть). Далее мы на основании этой информации создаем своего пользователя в своей базе (для аутентификации) и привязываем эту соцсеть к нему. При этом, если соцсеть выдает адрес электронной почты, то используем его, если нет, то создаем какой-то уникальный, так же генерим пароль. При этом фронтэнд будет пользователю постоянно напоминать, что укажите вашу актуальную почту и придумайте свой пароль.
Я все это к тому, что у вас нет модели связывающей пользователя и соцсеть, а еще вы расчитываете, что соцсеть выдаст email пользователя, но это бывает далеко не всегда. К тому же при вашем подходе, мы не можем добавить к существующему пользователю социальную сеть или несколько соцсетей, открепить от пользователя сеть.

Авторизация через соц сети

Упростите регистрацию и аутентификацию пользователей в Auth-сервисе, добавив вход через социальные сервисы. Список сервисов выбирайте исходя из целевой аудитории онлайн-кинотеатра — подумайте, какими социальными сервисами они пользуются. Например, использовать OAuth от Github — не самая удачная идея. Ваши пользователи — не разработчики и вряд ли пользуются аккаунтом на Github. Лучше добавить Yandex, VK или Google.
Вам не нужно делать фронтенд в этой задаче и реализовывать собственный сервер OAuth. Нужно реализовать протокол со стороны потребителя.
Информация по OAuth у разных поставщиков данных:
Yandex,
VK,
Google.

Регистрация через соц сети

Упростите регистрацию и аутентификацию пользователей в Auth-сервисе, добавив вход через социальные сервисы. Список сервисов выбирайте исходя из целевой аудитории онлайн-кинотеатра — подумайте, какими социальными сервисами они пользуются. Например, использовать OAuth от Github — не самая удачная идея. Ваши пользователи — не разработчики и вряд ли пользуются аккаунтом на Github. Лучше добавить Yandex, VK или Google.
Вам не нужно делать фронтенд в этой задаче и реализовывать собственный сервер OAuth. Нужно реализовать протокол со стороны потребителя.
Информация по OAuth у разных поставщиков данных:
Yandex,
VK,
Google.

auth: Изменение едпоинта для провайдера

Имена провайдеров авторизации лучше принимать в эндпоинтах в качестве строкового параметра. А не как у вас явно указан /login/yandex/redirect. Провайдеров может быть множество, а ручек достаточно лишь двух.

auth: Подготовить код к расширению списка провайдеров

Необходимо подготовить код к расширению списка провайдеров авторизации. Сейчас вы очень жестко привязались к yandex. Попробуйте еще какой-нибудь добавить и увидите, что там будет очень много общего. Можно будет создать базовый класс с общим функционалом и от него наследоваться.

Трассировка и Jaeger

Добавьте в Auth-сервис трассировку и подключите к Jaeger. Для этого вам нужно добавить работу с заголовком x-request-id и отправку трассировок в Jaeger.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.