greatbit / quack

Web Based Test Management System
Apache License 2.0
118 stars 34 forks source link

Не могу авторизоваться с учетными данными созданного пользователя #203

Closed krkub3 closed 2 years ago

krkub3 commented 2 years ago

Исходные данные Развернут QuAck на standalone сервере.

Создание пользователя

  1. Аутентификация с учетными данными root/rootpass
  2. В правом верхнем углу нажимаю root --> Create User
  3. Заполняю поле Login : testuser
  4. Заполняю поле Password : testuser
  5. Нажимаю Create
  6. Выхожу (Log out)

При авторизации с учетными данными testuser/testuser получаю ошибку: Unable to login: { "message" : "ru.greatbit.whoru.auth.error.UnauthorizedException: Login and password should match", "code" : 401 }

azee commented 2 years ago

Проверьте вот эту проперти https://github.com/greatbit/quack/blob/master/assembly/quack.properties#L8

По дефолту авторизация тупая - для демо и только через проперти. Если установить в com.testquack.api.security.DbAuthProvider то будет работать создание пользователей в базе и можно будет авторизовываться новыми пользователями

Пока у вас один инстанс, можно использовать InmemSessionProvider https://github.com/greatbit/quack/blob/master/assembly/quack.properties#L12

Но если у вас будет много реплик, то нужно будет поменять конфиг на ru.greatbit.whoru.auth.providers.HazelcastSessionProvider и установить конфигурацию хазелкаста, перечислив ноды https://github.com/greatbit/quack/blob/master/assembly/quack.properties#L29 Можно с wildcards (если у вас настроен VPC) Например hazelcast.interface=10.0.. Это нужно, чтобы сессии пользователей хранились не в памяти на каждой машине, а в распределённом хранилище. Хазелкаст - inmemory database - быстрая и позволяет не нагружать основную БД на каждый запрос к сессии

azee commented 2 years ago

AuthProcvider интерфейс сделан для того, чтобы каждая компания могла авторизацию под себя написать, если внутри используется что-то кастомное. Есть готовый провайдер для AWS Cognito. Был рабочий вариант для JiraServer. Сейчас работаем над SSO.

krkub3 commented 2 years ago

Если я устанавливаю whoru.session.provider=com.testquack.api.security.DbAuthProvider, то авторизация новых пользователей работает! Благодарю!

Но проект создать новый пользователь не может. При создании проекта получаю ошибку: Couldn't save project: { "code" : 400 }

И ещё один вопрос. Как удалить созданного пользователя?

azee commented 2 years ago

Да. При DBAuthProvider проекты создают админы и добавляют пользователей в списки доступа в проекты.

Удалить пользователя сейчас можно либо через базу, либо через api call от имени админа (надо передать token, установленный в конфиге)

Если есть такая потребность - можем сделать UI для удаления пользователей.

Если же есть желание дать возможность пользователям создавать проекты - то можно включить функциональность Организаций. Пользователь может создать организацию и становится её админом. Внутри организации он может создавать проекты. На это всё можно посмотреть в облаке http://cloud.testquack.com/ (3 параллельные пользовательские сессии на организацию - бесплатно)

krkub3 commented 2 years ago

Если есть такая потребность - можем сделать UI для удаления пользователей. Это было бы восхитительно!

krkub3 commented 2 years ago

Проверьте вот эту проперти https://github.com/greatbit/quack/blob/master/assembly/quack.properties#L8

По дефолту авторизация тупая - для демо и только через проперти. Если установить в com.testquack.api.security.DbAuthProvider то будет работать создание пользователей в базе и можно будет авторизовываться новыми пользователями

Пока у вас один инстанс, можно использовать InmemSessionProvider https://github.com/greatbit/quack/blob/master/assembly/quack.properties#L12

Но если у вас будет много реплик, то нужно будет поменять конфиг на ru.greatbit.whoru.auth.providers.HazelcastSessionProvider и установить конфигурацию хазелкаста, перечислив ноды https://github.com/greatbit/quack/blob/master/assembly/quack.properties#L29 Можно с wildcards (если у вас настроен VPC) Например hazelcast.interface=10.0.. Это нужно, чтобы сессии пользователей хранились не в памяти на каждой машине, а в распределённом хранилище. Хазелкаст - inmemory database - быстрая и позволяет не нагружать основную БД на каждый запрос к сессии

Если я в конфигурационном файле напишу whoru.auth.provider=ru.greatbit.whoru.auth.providers.StubAuthProvider. Можно ли в конфигурационном файле создать несколько stub.login? Например:

stub.login1=somelogin1
stub.password1=somepass1
stub.login2=somelogin2
stub.password2=somepass2