Авторизация
Авторизация
МЭШ как продукт не имеет собственной системы авторизации и полностью полагается на OAuth2.
Регион | Провайдер OAuth2 |
|---|---|
Москва | mos.ru |
Другие | gosuslugi.ru, kauth ...ru/login |
mos.ru
Ссылки
Полный путь к модулю: https://school.mos.ru/v3/auth/sudir/login Authorize URI: https://login.mos.ru/sps/oauth/ae?response_type=code&access_type=offline&client_id=dnevnik.mos.ru&scope=openid+profile+birthday+contacts+snils+blitz_user_rights+blitz_change_password&redirect_uri=https://school.mos.ru/v3/auth/sudir/callback Redirect URI: https://school.mos.ru/v3/auth/sudir/callback
Используется в Москве, очень трудно автоматизировать из-за большого количества систем защиты, в данный момент используется headless браузер для автоматизации входа.
Процесс ручной авторизации
Запускаем headless браузер с аргументом
--disable-blink-features=AutomationControlledПереходим на
https://school.mos.ruПо клику переходим на страницу авторизации, на текущий момент актуальный selector для этого -
#root > div > div.style_main-container__3z5Nv > main > section > div > div.style_sec-intro_left__2XBWp > div.style_sec-intro_aside__2Be41 > div > div.style_aside-login__3YTaH > div.style_aside-login_action__2KJI4 > divНа полученной странице вводим логин и пароль в поля
#loginи#passwordПодтверждаем вход нажатием кнопки
#bindЕсли на странице появился блок
#sms-code- сайт ждёт ввода СМС кода, если вы не можете заставить пользователя предоставить его, можно перейти на OTP, для этого нажимаем на кнопкуdiv.twoFa__social--main > div > a:nth-child(2)илиa[href^="/sps/login/methods2/totp"](появляется один из них)Если на странице появился блок
#otp- вводим сгенерированный код в поле#otpи нажимаем#saveЕсли на странице появился блок
body > div.system__layout > main > section > div > section > h1- сайт спрашивает нас о доверии к браузеру, нажимаем#agree
Если мы получили ответ от запроса
https://dnevnik.mos.ru/mobile/api/profile- мы успешно авторизировалисьЕсли мы сделали запрос на любой метод начинающийся с
https://school.mos.ru/api/family/web/v1/profile- мы успешно авторизировалисьЕсли на странице появился блок
#pswdMethod-c > blockquote > p- пароль не верен
После успешной авторизации вам необходимо получить значения из cookies браузера
Cookie | Значение |
|---|---|
profile_id | ID профиля (непосредственно привязанного к роли) |
profile_roles | Роли профиля |
auth_token | Токен |
user_id | ID пользователя (аккаунт всецело) |
gosuslugi.ru
Ссылки
Полный путь к модулю: https://myschool.72to.ru/v3/auth/esia/login Authorize URI: https://esia.gosuslugi.ru/aas/oauth2/v2/ac?response_type=code&access_type=offline&client_id=ELSH01721&client_certificate_hash=449ED7E1F84E466499AB928A1439639B75FAE9C2AF61BC768D74FD5C1ECE5020&client_secret=y3_GrxOz8UZXwGe07EXytG3MI7-kK9SkOpT5KzKJUK8fNLFKEfFq9O5YwrQXAauquDFEW-LOsE9zvxqZcfif8Q×tamp=[REDACTED]&scope=openid+fullname+snils+kid_fullname+kid_birthdate+kid_snils+birth_cert_doc+kid_birth_cert_doc+gender+birthdate&redirect_uri=https%3A%2F%2Fmyschool.72to.ru%2Fv3%2Fauth%2Fesia%2Fcallback&state=[REDACTED] Redirect URI: https://myschool.72to.ru/v3/auth/esia/callback
Используется в Тюмени и других регионов. Вполне автоматизируется пример.
myschool.72to.ru/login
Ссылки
Полный путь к модулю: https://myschool.72to.ru/v3/auth/kauth/login Authorize URI: https://myschool.72to.ru/login/?response_type=code&access_type=offline&client_id=kauth&scope=openid+profile+birthday+contacts+snils&redirect_uri=https%3A%2F%2Fmyschool.72to.ru%2Fv3%2Fauth%2Fkauth%2Fcallback%3F Redirect URI: https://myschool.72to.ru/v3/auth/kauth/callback
Используется в Тюмени. Возможно автоматизируется, но не исследован ввиду отсутствия аккаунтов учеников из Тюмени.
Идентификация
Для идентификации запроса используется сочетание заголовков Auth-token, Profile-Id и Cookies auth_token, student_id.
OAuth
API позволяет производить OAuth авторизацию, для мобильных приложений. Для этого необходимо отправить пользователя на страницу авторизации OAuth.
https://login.mos.ru/sps/oauth/ae?scope=birthday%20contacts%20openid%20profile%20snils%20blitz_change_password%20blitz_user_rights%20blitz_qr_auth&access_type=offline&response_type=code&client_id=CLIENT_ID&redirect_uri=dnevnik-mes://oauth2redirect&promt=login&code_challenge=ffd
Учтите что CLIENT_ID создаётся в рантайме перед вызовом для этого надо сделать POST запрос на https://login.mos.ru/sps/oauth/register, в теле запроса:
И в headers:
После успешной авторизации браузер перенаправит на адрес dnevnik-mes://oauth2redirect.