Фиктивный провайдер аутентификации
Описание
Этот провайдер аутентификации позволяет войти в систему с любым именем пользователя и паролем, а затем выдаёт токен доступа.
После успешной аутентификации имя пользователя сохраняется в базе данных сервера.
Схема взаимодействия
@startuml
title Фиктивный провайдер аутентификации
participant "Клиент"
participant "Сервер"
== POST v1/auth/token ==
activate "Клиент"
alt Успешный случай
"Клиент" -> "Сервер" ++ : логин + пароль
"Сервер" --> "Сервер" : Пароль полностью игнорируется
"Сервер" --> "Сервер" : Проверить пользователя во внутренней базе данных сервера
"Сервер" -> "Сервер" : Создать пользователя, если он не существует
"Сервер" -[#green]> "Клиент" -- : Сгенерировать и вернуть access_token
else Пользователь блокирован
"Клиент" -> "Сервер" ++ : логин + пароль
"Сервер" --> "Сервер" : Пароль полностью игнорируется
"Сервер" --> "Сервер" : Проверить пользователя во внутренней базе данных сервера
"Сервер" x-[#red]> "Клиент" -- : 401 Не авторизован
else Пользователь удален
"Клиент" -> "Сервер" ++ : логин + пароль
"Сервер" --> "Сервер" : Проверить пользователя во внутренней базе данных сервера
"Сервер" --> "Сервер" : Check user in internal server database
"Сервер" x-[#red]> "Клиент" -- : 404 Не найден
end
== GET v1/users/me ==
alt Успешный случай
"Клиент" -> "Сервер" ++ : токен доступа
"Сервер" --> "Сервер" : Валидация токена
"Сервер" --> "Сервер" : Проверить пользователя во внутренней базе данных сервера
"Сервер" -> "Сервер" : Предоставить данные
"Сервер" -[#green]> "Клиент" -- : Вернуть данные
else Срок действия токена истек
"Клиент" -> "Сервер" ++ : токен доступа
"Сервер" --> "Сервер" : Валидация токена
"Сервер" x-[#red]> "Клиент" -- : 401 не авторизован
else Пользователь блокирован
"Клиент" -> "Сервер" ++ : токен доступа
"Сервер" --> "Сервер" : Валидация токена
"Сервер" --> "Сервер" : Проверить пользователя во внутренней базе данных сервера
"Сервер" x-[#red]> "Клиент" -- : 401 не авторизован
else Пользователь удален
"Клиент" -> "Сервер" ++ : токен доступа
"Сервер" --> "Сервер" : Валидация токена
"Сервер" --> "Сервер" : Проверить пользователя во внутренней базе данных сервера
"Сервер" x-[#red]> "Клиент" -- : 404 не найден
end
deactivate "Клиент"
@enduml
sequenceDiagram
participant "Клиент"
participant "Сервер"
activate "Клиент"
alt Успешный случай
"Клиент" ->> "Сервер" : логин + пароль
"Сервер" ->> "Сервер" : Пароль полностью игнорируется
"Сервер" ->> "Сервер" : Проверить пользователя во внутренней базе данных сервера
"Сервер" ->> "Сервер" : Создать пользователя, если он не существует
else
"Клиент" ->> "Сервер" : логин + пароль
"Сервер" ->> "Сервер" : Пароль полностью игнорируется
"Сервер" ->> "Сервер" : Проверить пользователя во внутренней базе данных сервера
else
"Клиент" ->> "Сервер" : логин + пароль
"Сервер" ->> "Сервер" : Проверить пользователя во внутренней базе данных сервера
"Сервер" ->> "Сервер" : Check user in internal server database
end
alt Успешный случай
"Клиент" ->> "Сервер" : токен доступа
"Сервер" ->> "Сервер" : Валидация токена
"Сервер" ->> "Сервер" : Проверить пользователя во внутренней базе данных сервера
"Сервер" ->> "Сервер" : Предоставить данные
else
"Клиент" ->> "Сервер" : токен доступа
"Сервер" ->> "Сервер" : Валидация токена
else
"Клиент" ->> "Сервер" : токен доступа
"Сервер" ->> "Сервер" : Валидация токена
"Сервер" ->> "Сервер" : Проверить пользователя во внутренней базе данных сервера
else
"Клиент" ->> "Сервер" : токен доступа
"Сервер" ->> "Сервер" : Валидация токена
"Сервер" ->> "Сервер" : Проверить пользователя во внутренней базе данных сервера
end
deactivate "Клиент"
Конфигурация
Bases: BaseModel
Settings for DummyAuthProvider.
Examples
.. code-block:: yaml :caption: config.yml
auth:
provider: syncmaster.server.providers.auth.dummy_provider.DummyAuthProvider
access_key:
secret_key: jwt_secret
Source code in syncmaster/server/settings/auth/dummy.py
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
Bases: BaseModel
Settings related to JWT tokens.
Examples
.. code-block:: yaml :caption: config.yml
auth:
access_key:
secret_key: jwt_secret
expire_seconds: 3600 # 1 hour
Source code in syncmaster/server/settings/auth/jwt.py
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | |