GetAnalyst - Навыки • Системный анализ • Бизнес-анализ
19.7K subscribers
2.12K photos
75 videos
208 files
1.2K links
Разбор задач на проектирование систем 🚀 Канал для системных аналитиков, бизнес-аналитиков, тестировщиков и менеджеров проектов

Админ @getanalyst
Сайт https://getanalyst.ru
Чат t.iss.one/getanalystchat
Начинающим в IT @getanalyststart

РКН №5013005196
Download Telegram
🔐 5 способов авторизации в API - наглядное демо по настройкам в Postman 🔐

При проектировании интеграций, системному аналитику важно заранее продумать сценарий авторизации запросов во внешнюю систему.


Почему?

1. Без авторизации вызовы API просто не пройдут — интеграция «упадёт» уже на первом шаге.

2. Разные механизмы требуют разной логики работы и обработки ошибок.

3. Чёткое понимание процесса авторизации упрощает тестирование и облегчает отладку сценариев интеграции.



📌 Основные способы авторизации
API Key
Basic Auth
Bearer Token
JWT Token
OAuth 2.0
Mutual TLS (по сертификатам)



📌 Как оформлять в требованиях?

При работе с задачей на интеграцию, аналитик пишет требования к интеграционным API-методам или Backend-процессам для своей системы, в логике которых встроены вызовы внешних API.

👉 Не дублируйте требования к авторизации в одном и том же внешнем API в каждом Use Case, который его использует.

Вместо того, чтобы в каждом интеграционном Use Case описывать требования к авторизации во внешней системе и обработку её ошибок, достаточно вынести общие требования к авторизации в отдельную статью (+задачу) и затем ссылаться на неё.

При описании отдельных API-методов или Backend-процессов лучше фокусироваться только на специфике их работы.



📌 Обработка ошибок


Важно предусмотреть и описать требования к обработке ошибок аутентификации и авторизации в процессе работы интеграции:

401 Unauthorized — неверные или отсутствующие учётные данные. Возможна повторная фоновая аутентификация.

403 Forbidden — недостаточно прав для выполнения операции, хотя аутентификация (учётные данные) может быть верной.

419 Token Expired — срок действия токена истёк, требуется рефреш или повторная фоновая аутентификация.

429 Too Many Requests — превышен лимит запросов (для API Key/токена OAuth, учетной записи).



📌 Логирование
Логируйте и мониторьте случаи ошибок авторизации.
Если попытки повторной фоновой авторизации не приводят к успеху, то есть высокий риск, что интеграция "упала".



#ИнтеграцииGA
19👍10🔥7❤‍🔥4😍1👀1
🔐 Новый проект по OAuth 2.0 на реальном кейсе: подключаем вход через аккаунт Mail.ru в FoodDeliveryGA 🔐

Один из самых частых вопросов в чате GetAnalyst и от наших студентов звучит примерно так:
👉 Как спроектировать авторизацию через Госуслуги в нашей системе?

По аналогии с тем, как мы везде входим “через Google”, “через Apple”, "через Яндекс" и другие сервисы.


👉 Это именно та интеграция, которая сегодня встречается почти в любом IT-продукте: от интернет-магазинов до корпоративных систем.

Поэтому в этом месяце мы продолжим разбирать проект FoodDeliveryGA, чтобы на его примере показать как проектировать интеграцию с OAuth 2.0 сервисом на практике:

🔐 Пользователь сможет войти в FoodDeliveryGA через профиль Mail.ru
(полный аналог “Войти через Госуслуги”, только на другом провайдере)


👉 План:

1. Разберёмся в специфике OAuth 2.0

2. Определим влияние интеграции на архитектуру системы (какие компоненты и потоки появляются)

3. Исследуем API-документацию Mail.ru

4. Протестируем API Mail.ru в Postman, чтобы увидеть, как он реально работает (а не “как написано в доке”)

5. Опишем интеграционные Use Cases:
+ регистрация пользователя
+ авторизация
+ восстановление доступа
со всеми тех. деталями (запросы, ответы, альтернативные ветки)

6. Сделаем маппинги данных + доработки БД (что храним, что НЕ храним после входа через аккаунт Mail.ru, ключевые поля)

7. Дополним требования UML-диаграммами

8. Сформируем требования к интеграционным REST API методам на нашем Backend


🎯 Результат:
У вас на руках будет не “теория про токены и OAuth 2.0”, а полноценная постановка задачи на интеграцию, которую можно повторить с любым OAuth-провайдером в любом проекте!
В том числе с Госуслугами!


Проект FoodDeliveryGA разбираем в поддержку практической программы Интеграции систем 🧩


Готовы получить новый опыт и знания?
Подписывайтесь на GetAnalyst и следите за хэштегом #FoodDeliveryGA_oauth!

Добро пожаловать в проект! 🤝


#ИнтеграцииGA
🔥4214
📖🔖 Всё про OAuth 2.0 с примером за 3 минуты 📖


👉 OAuth 2.0 — это стандарт, который позволяет вашему приложению получить ограниченный доступ к данным пользователя во внешнем сервисе без передачи пароля


👉 Ключевая идея на примере FoodDeliveryGA

пользователь логинится в приложении FoodDeliveryGA и подтверждает доступ к его личным данным на стороне внешнего сервиса (Mail.ru) - через его безопасную web-форму

FoodDeliveryGA получает токены доступа и работает дальше через API

пароль пользователя от Mail.ru приложению FoodDeliveryGA никогда не передают


👉 Роли в OAuth 2.0
на примере FoodDeliveryGA

▫️Resource Owner (Владелец ресурса) — пользователь
Человек, который хочет войти в приложение FoodDeliveryGA и даёт согласие на доступ к его данным в Mail.ru для этого приложения

▫️Client (Клиент) — приложение FoodDeliveryGA
Frontend + Backend (в зависимости от схемы), которое инициирует авторизацию

▫️Authorization Server (Сервер авторизации)Mail.ru
На предоставляемой им web-форме пользователь вводит логин/пароль Mail.ru и подтверждает доступ к данным

▫️Resource Server (Сервер ресурсов) — API Mail.ru
Методы REST API, где лежат данные пользователя (например, профайл / user info, информация о друзьях, посты на стене в социальной сети Мой Мир и другие данные).
Эти методы мы вызываем с использованием токена, который получили после аутентификации пользователя

💡 Часто Authorization Server и Resource Server находятся “в одном провайдере” (как Mail.ru), но логически это разные роли и с точки зрения Mail.ru это разные сервисы (сервера)


👉 Алгоритм работы OAuth 2.0 по шагам на картинке
для Grant Type=authorization_code


👉 OAuth 2.0 Grant Types - алгоритмы
authorization_code
refresh_token
client_credentials
implicit
password
device_code


👉 Ключевые параметры OAuth 2.0
для API-методов (в URL и JSON)

response_type
client_id
client_secret
redirect_uri

scope
state

refresh_token
access_token
token_type
expires_in

Зависят от Grant Type


Продолжение в следующих постах #FoodDeliveryGA_oauth 🚀

#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
16🔥9❤‍🔥2👍1
💫 ПРОБЛЕМЫ В РАБОТЕ С ЗАДАЧАМИ НА ИНТЕГРАЦИИ 💫

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

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

1:18 - Что такое интеграции?
4:25 - Роль системного аналитика в процессе работы с задачами на интеграции.
11:41 - Как изменилась работа с задачами на интеграции за последние годы?
16:49 - Написал требования в соответствии с API-документацией внешней системы, а потом оказалось, что работает не так.
19:40 - Интеграция работала в продакшн и всё было хорошо, а потом всё внезапно сломалось.
22:57 - Что делать если предстоит интегрироваться с системой у которой еще нет API, а сроки горят?
26:18 - Разработчик системы, с которой предстоит интегрироваться, не предоставляет API и доступы, а задачу нужно реализовать, потому что сроки (P.S. Влиять через заказчика на внешнюю команду при возможности).
28:07 - Что, если вы тот самый разработчик, у которого просят API, но вам пока не до этого?
29:21 - Платные подписки и использование внешних систем. Примеры: DaData.ru, сервисы SMS-рассылок с поштучной оплатой со счета заказчика и другие.
31:58 - Разные структуры данных в разных системах: как собрать всё в нашей системе воедино? Про агрегаторы.
36:07 - Высокие нагрузки и длительное ожидание ответов. Асинхронные запросы и вебхуки.
39:37 - Не работал с видом API, по которому предстоит интеграция (REST API, GraphQL, gRPC, SOAP API и WebSocket - основные, посмотрите на них).
42:02 - Заключение и рекомендации


Эпизод доступен в:

Яндекс.Музыка
YouTube
Telegram
Apple Podcast
Castbox
Spotify
Amazon Music


Подписывайтесь на GetAnalyst и делитесь с коллегами - начинающими и опытными системными аналитиками!
🔥18❤‍🔥62
🧩 22 декабря | Маппинг данных: БД и JSON 🧩

Если вы хоть раз описывали интеграцию или требования к REST API-методу, то возможно вам знакомо:
- в БД одно, в JSON другое, а на UI третье,
- «а почему поле так называется»,
- «а откуда берём значение»,
- «а что если null»,
- «а как это маппить в требованиях».


Чтобы закрыть эти вопросы раз и навсегда и уверенно чувствовать себя в связке JSON БД, приглашаю вас на онлайн-практикум 👇

🧩 Маппинг данных: БД и JSON
🗓 22 декабря, 19:00 Мск

👉
Записаться на практикум
Стоимость участия от 1390 рублей


Запись будет опубликована в платформе на следующий день после занятия
🎁 Занятие в записи по использованию AI для проектирования БД + SQL


План:

1. Знакомство с JSON
2. Практика формирования JSON для API методов на основе БД и дизайна UI
3. Описание маппингов данных
4. Автоматизация задачи с использованием AI-инструментов


В результате практикума вы:
✔️ Поймёте, как связать UI → JSON → БД в одну логичную схему
✔️ Заберёте себе понятный подход, как оформлять маппинг в требованиях
✔️ Получите практический опыт, который можно сразу применять в работе


По вопросам можно написать @getanalyst или [email protected].


До встречи онлайн! 🤩
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥146🥰2
🔑 Ключевые параметры OAuth 2.0 🔑

Прежде чем разбирать OAuth 2.0 flows (grant types) - алгоритмы, давайте познакомимся с его ключевыми параметрами.


📌 Шаги в OAuth 2.0

👉 Запрос на авторизацию - получение code

GET .../oauth/authorize
?response_type=code
&client_id=...
&redirect_uri=...
&scope=...
&state=...


👉 Callback на ваш redirect_uri - получен code
GET https:// testapp .com/api/v1/auth/oauth/provider/callback
?code=/...
&state=...


👉 Обмен code на токены
POST .../oauth/token

grant_type=authorization_code&
code=...&
client_id=...&
client_secret=...&
redirect_uri=...



📌 Параметры:

1️⃣ response_type
Тип результата, который вы хотите получить на шаге авторизации - регулирует ответ на GET /authorize

Где используется:
В URL для GET /authorize


2️⃣ client_id
Публичный идентификатор приложения, который предоставляет провайдер OAuth 2.0 (Mail ru /Google и др) после его регистрации у себя.

Где используется:
+ в URL для GET /authorize
+ в теле POST /token
+ иногда в запросах на обновление токена или в других grant types


3️⃣ client_secret
Cекрет (пароль) вашего приложения, который предоставляет провайдер OAuth 2.0 после регистрации

Где используется:
чаще всего в POST /token


4️⃣ redirect_uri
Это URL, куда провайдер OAuth 2.0 возвращает пользователя после аутентификации

Пример:
Пользователь вводит логин и пароль от своего Google-аккаунта на безопасной форме от Google. После этого Google делает переход на redirect_uri


Кто формирует:
Владелец приложения, который будет использовать OAuth 2.0.
Он указывает его в настройках при регистрации.

Где используется:
+ в URL для GET /authorize
+ в теле POST /token


5️⃣ scope
Список прав/доступов, которые вы запрашиваете у пользователя.

Пример:
Ваше приложение запрашивает у пользователя доступ к его Google-аккаунту:
+ ФИО
+ почта
+ Google-диск, чтение
и др.
scope=profile,email,drive:read


Кто формирует:
Владелец приложения

Где используется:
В URL для GET /authorize

На что влияет:
+ какие данные/действия разрешены для access_token
+ что пользователь увидит в окне согласия на безопасной форме от провайдера OAuth


6️⃣ state
Случайная строка для защиты от подмены (CSRF атаки) и для связывания “запрос-ответ”

Кто формирует/проверяет:
Backend приложения, который использует OAuth 2.0

Где используется:
+ отправляется в URL для GET /authorize
+ возвращается провайдером в redirect_uri вместе с code или error

Backend генерирует state, сохраняет (в сессии/БД/кэше), потом сравнивает с ответами от OAuth 2.0 провайдера

Если state не совпал — считаем запрос из процесса авторизации атакой/ошибкой и прерываем его


7️⃣ code (authorization code)
Временный одноразовый код, который провайдер возвращает после успешного входа пользователя.

Он нужен, чтобы безопасно обменять его на токены (access/refresh) через POST /token

Где появляется:
В URL на вашем redirect_uri (callback) после логина.

🕘 Есть срок жизни:
Обычно короткий (минуты/часы)


8️⃣ access_token
Токен доступа к API провайдера (Resource Server).

Где появляется:

В ответе на POST /token.

Как используется:
В дальнейших запросах к API провайдера (Resource Server).

Пример:
Подписываем запрос на получение файлов с Google-диска пользователя с access_token.

🕘 Есть срок жизни:
Обычно короткий (минуты/часы)


9️⃣ refresh_token
Это “токен обновления”.

По нему можно получить новый access_token без повторного запроса логина+пароля у пользователя.

Где появляется:
В ответе на POST /token.
Но не всегда выдаётся провайдером и не всегда нужен.

Как используется:
в запросе POST /token с grant_type=refresh_token.

🕘 Есть срок жизни:
либо нет, либо длинный (месяцы/год)


🔟 token_type
Тип токена.
Чаще всего Bearer.

Где появляется:
В ответе на POST /token


1️⃣1️⃣ expires_in
Срок жизни access_token в секундах.

Где появляется:
в ответе POST /token

Как используется:
+ ваше приложение рассчитывает момент истечения: expiresAt = now + expires_in
+ когда время подходит, то приложение обновляет access_token через refresh_token (фоново) или заново ведёт пользователя на авторизацию

#ИнтеграцииGA
#FoodDeliveryGA_oauth
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥11🥰2❤‍🔥1
Официально заявляю: самый жаркий месяц в году - Декабрь 🔥🫠🪭

1️⃣ Идут сдачи проектов
Выпущена куча рождественских, новогодних и не только фичей.
Заказчики хотят «ещё вот это» под конец года, а я:
то «нет-нет, давайте в январь», то «ок-ок-ок, сейчас что-то придумаем» 👌

2️⃣ Запускаем ещё один бизнес (наконец-то).
Пока сильно не говорю об этом. Сначала надо пройти ещё несколько шагов. Но внутри уже ура

3️⃣ По выходным учеба
И восстановление знаний по высшей математике.
Спасибо универу.
Мозг в шоке 😄

4️⃣ GetAnalyst 💘
У нас завершилось два потока обучения по Архитектуре и Интеграциям, и им на смену уже пришли (и приходят) новые.
Новые студенты на СА с нуля.
Начался AI-Акселератор.
Все активные, что очень радует!!! 🤩

И вы только посмотрите, какие домашки мне теперь приходят на проверку - видео с птичками 🐦😄

И ещё я стараюсь не забывать собирать обратную связь.
Спасибо вам за неё! Она очень вдохновляет и добавляет сил работать дальше 💛 даже в самый жаркий месяц))


👇👇👇
Что хочу сказать.


Всё классно, всё нравится, всё интересно!

Но я откровенно утонула в задачах и многое из планов не успеваю.

Хотела провести открытый онлайн-практикум 24 декабря, но в итоге перенесла на январь, а в завершении года готовим для вас другой сюрприз 🎁🎄


Ежегодно в декабре я чувствую, что 24 часов в сутках ооочень мало 🫠

А вообще - это декабрь, и его надо просто прожить. Тем более, что мой ежегодный отпуск на две недели начнётся уже в ближайший четверг 🥳


А как у вас идёт завершение года?
Тоже завалы на работе или полегче?
Поделитесь в комментариях, скажите, что не только у меня такой декабрьский завал ☺️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👏20🍾86💯2👍1🤯1
🔔 Сегодня в 19:00 Мск | Маппинг данных: БД и JSON 🔔

Онлайн-практикум для системных и бизнес-аналитиков, которые хотят научиться самостоятельно проектировать и описывать JSON-объекты с нуля.

Этот навык даст вам уверенность
+ в рабочих задачах на API и интеграции,
+ в общении с разработчиками,
+ а также на собеседованиях при решении задач на REST API и понимание БД/SQL.

👉 Что получите:
1. Структурированные знания о JSON и его связи с БД+UI
2. Опыт проектирования JSON с нуля под реальные API-методы
3. Опыт разработки маппингов для интеграций Frontend-Backend-Внешние системы
4. Понимание, как применять AI-инструменты


📚 Материалы, которые заберёте:
✔️ Руководство по JSON
✔️ Подборка шаблонов для описания маппинга
✔️ Подборка примеров постановок задач с маппингом
✔️ Оптимизированный промпт для работы с AI + разбор его настроек


📹 Можно посмотреть в записи - будет доступна на следующий день после эфира

🎁 Занятие в записи по использованию AI для проектирования БД + SQL


🧩 Маппинг данных: БД и JSON
🗓 22 декабря, 19:00 Мск

🔗 Записаться на практикум
Стоимость участия от 1390 рублей


По вопросам можно написать @getanalyst или [email protected].

До встречи онлайн! 😌
Please open Telegram to view this post
VIEW IN TELEGRAM
9