Обновил документацию
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -483,3 +483,5 @@ $RECYCLE.BIN/
|
|||||||
|
|
||||||
# Windows shortcuts
|
# Windows shortcuts
|
||||||
*.lnk
|
*.lnk
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2025 serega404
|
Copyright (c) 2025 Sergey Karmanov
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
||||||
associated documentation files (the "Software"), to deal in the Software without restriction, including
|
associated documentation files (the "Software"), to deal in the Software without restriction, including
|
||||||
|
|||||||
56
README.md
56
README.md
@@ -1,2 +1,58 @@
|
|||||||
# ModeusSchedule.MSAuth
|
# ModeusSchedule.MSAuth
|
||||||
|
|
||||||
|
## Зачем нужен этот сервис
|
||||||
|
|
||||||
|
ModeusSchedule.MSAuth — это вспомогательный HTTP-сервис, который автоматизирует авторизацию в Microsoft, заходит в веб-интерфейс Modeus и извлекает свежий `id_token` (JWT). Этот токен затем может использоваться другими компонентами вашей системы для обращения к API Modeus без ручного входа пользователя. Проект устраняет необходимость хранить пользовательские cookie, а также упрощает раздачу короткоживущих токенов другим сервисам через REST‑эндпоинт.
|
||||||
|
|
||||||
|
## Ключевые возможности
|
||||||
|
|
||||||
|
- Браузерная авторизация через Playwright и Chromium в режиме headless.
|
||||||
|
- Кэширование токена на 20 минут, чтобы избежать лишних логинов.
|
||||||
|
- Ограничение параллельных попыток авторизации (возврат HTTP 429, если процесс уже идет).
|
||||||
|
- Опциональная защита API ключом (заголовок `X-API-Key`).
|
||||||
|
- Простой REST‑эндпоинт `GET /auth/ms`, который возвращает JSON `{ "jwt": "..." }`.
|
||||||
|
|
||||||
|
## Как это работает
|
||||||
|
|
||||||
|
1. Сервис при старте проверяет, что заданы параметры подключения к Modeus и учетные данные Microsoft (`MODEUS_URL`, `MS_USERNAME`, `MS_PASSWORD`).
|
||||||
|
1. При первом запросе Playwright поднимает headless Chromium и логинится в Modeus через Microsoft IDP.
|
||||||
|
1. После успешного входа токен `id_token` извлекается из `sessionStorage`, сохраняется в памяти и отдается клиенту.
|
||||||
|
1. Пока токен свежий, новые запросы обслуживаются из кэша. Как только TTL истекает, запускается новая авторизация.
|
||||||
|
|
||||||
|
## Конфигурация
|
||||||
|
|
||||||
|
| Параметр | Где задается | Назначение |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `MODEUS_URL` | `appsettings.json` / переменные окружения | URL портала Modeus (например, `https://<название вуза>.modeus.org/`). |
|
||||||
|
| `MS_USERNAME` | `appsettings.json` / переменные окружения | Логин сервисной учетной записи Microsoft 365. |
|
||||||
|
| `MS_PASSWORD` | `appsettings.json` / переменные окружения | Пароль от этой учетной записи. |
|
||||||
|
| `API_KEY` *(опционально)* | `appsettings.json` / переменные окружения | Если задан, сервис будет требовать заголовок `X-API-Key`. |
|
||||||
|
|
||||||
|
## Быстрый старт
|
||||||
|
|
||||||
|
1. Установите .NET 9 SDK и Playwright (будет поставлен автоматически при первом запуске).
|
||||||
|
1. Создайте файл `appsettings.Development.json` или задайте переменные окружения с параметрами из таблицы выше.
|
||||||
|
1. Соберите и запустите сервис:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd src
|
||||||
|
dotnet run
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Выполните запрос:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -H "X-API-Key: <ваш ключ>" http://localhost:5000/auth/ms
|
||||||
|
```
|
||||||
|
|
||||||
|
В ответ вы получите JSON с полем `jwt`. При повторных вызовах в пределах времени жизни кэша сервис не будет заново входить в Microsoft.
|
||||||
|
|
||||||
|
## Безопасность и эксплуатация
|
||||||
|
|
||||||
|
- Используйте отдельную сервисную учетную запись Microsoft с минимально необходимыми правами.
|
||||||
|
- Ограничьте доступ к эндпоинту по сети (VPN, reverse proxy) и включите проверку `API_KEY`.
|
||||||
|
- Логи Playwright могут содержать диагностическую информацию, поэтому убедитесь, что они не раскрывают пароли.
|
||||||
|
|
||||||
|
## Лицензия
|
||||||
|
|
||||||
|
Проект распространяется под лицензией MIT. Подробнее в файле [`LICENSE`](LICENSE).
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
"dotnetRunMessages": true,
|
"dotnetRunMessages": true,
|
||||||
"launchBrowser": false,
|
"launchBrowser": false,
|
||||||
"applicationUrl": "http://localhost:5258",
|
"applicationUrl": "http://localhost:5000",
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user