Вопросы по Rest API

Добрый день! Имеются некие вопросы по вашей платформе. Наша компания хочет реализовать сервер REST API на вашей платформе. Вопросы основные такие. Существует ли возможность прикрутить регистрацию в вашей платформе? Создалось впечатление , что на платформе можно работать либо с готовыми пользователями в базе данных, либо через oauth2 создание пользователей из других сервисов, что не подходит под наши задачи. Если есть примеры такой реализации на rest api был бы благодарен .

Дополню: Регистрация необходима , чтобы пользователи сами могли себя занести в базу данных , а уже после получить токен согласно пользователю в базе.

Добрый день! Так вроде же anonymous был создан специально для таких случаев Authentication :: Документация Jmix (там ближе к концу). Через него можно реализовать работу с методами саморегитрации, зачем только - не очень понятно …
Если его функциональности недостаточно, то можно выделить 1 “полноценного” общего пользователя, через которого будут регистрироваться остальные. Но не очень понятна задача.
Из коробки саморегистрации вроде бы нет (ну или о ней пока что широко не известно).
Вы хотите как-то профилировать OpenAPI шлюз (который в JMIX не рализован), чтобы у каждого из пользователей были свои индивидуальные настройки? Или Вам уже потом внутри системы нужно понимать какой объект был создан/изменен каким пользователем через OpenAPI шлюз?

Вообще выставлять АПИ JMIX в грязный Интернет наверно не самая лучшая идея. Мы у себя проксируем через APISIX и ему подобные шлюзы, на которых реализовано документирование открытых методов, саморегистрация, профильная низкоуровневая защита и биллинг.

В дополнение к ответу Игоря чуть подробнее опишу простой вариант регистрации через REST API.

  • Создаете свой контроллер типа такого:

    @RestController
    public class UserRegistrationController {
    
        @PostMapping("/rest/user-registration")
        public void registerUser(@RequestParam String username, @RequestParam String password) {
          // ...
        }
    }
    
  • Делаете URL контроллера доступным без аутентификации:

    jmix.rest.anonymous-url-patterns = /rest/user-registration
    
  • В DatabaseUserRepository вашего проекта конфигурируете права пользователя anonymous нужным вам образом - например чтобы он мог создавать сущность User. См. пример в документации. Используйте роли с scope = "API".

  • Метод registerUser вашего контроллера будет выполняться с контекстом и правами пользователя anonymous. Используйте бин PasswordEncoder чтобы закодировать пароль пользователя.

1 симпатия