Доработки аутентификации
radist-nt opened this issue · 2 comments
radist-nt commented
Есть необходимость использования аутентификации в различных системах с общей базой пользователей, при этом сами пользователи могут аутентифицироваться в разных источниках (разные AD-домены, openid и т.п.). Есть идея использовать аутентификацию в core в качестве этой общей базы. Отсюда появляется определённый набор требований.
Требования к системе аутентификации:
- долждна быть возможность использования одновременно как локальной аутентификации, так и подключения внешних провайдеров (например, доменов в различных AD)
- при аутентификации через внешнего провайдера, должна быть возможность получения как данных пользователя, так и его ролей (и то и другое должно настраиваться независимо для каждого провайдера), при этом должна остаться возможность для таких пользователей часть ролей и атрибутов пользователя назначать локально (тех, которые провайдер не предоставляет)
- должна быть возможность использования аутентификации внешними системами (не построенными на базе Core), например, посредством вызова запроса аутентификации (при этом на вход должен, дополнительно к остальным параметрам, передаваться код системы и должно дополнительно проверяться наличие доступа к хотя-бы одной роли этой системы)
- для локальных пользователей хеш пароля хранится универсальным образом, позволяя при необходимости в любой момент сменить алгоритм хеширования на рабочей системе, перед хешированием пароля, к нему должна подмешиваться секретная часть, которая хранится на среднем слое и никогда не попадает в БД, чтобы усложнить подбор простых паролей при утечке БД
- ответ при неуспешной аутентификации не должен содержать информации о причине неуспеха, чтобы не позволять перебор пользователей (т.е., у пользователя не должно быть способа узнать, введён ли существующий логин)
- после неправильного ввода логина или пароля, при повторной попытке по тому-же логину, должна добавляться нарастающая задержка перед проведением аутентификации, эта задержка должна сбрасываться через настраиваемое время
Требования к системе администрирования пользователей:
- разграничение администрирования ролей по системам: для каждой системы вводится действие, дающее доступ на администрирование этой системы (уровень доступа определяется отдельно)
- разграничение уровней доступа (отдельные действия):
-- настройка внешних провайдеров, справочника реквизитов пользователей и действий
-- настройка ролей любых систем (без назначения действия по администрированию системы)
-- настройка ролей по системам, для которых пользователь является администратором
-- назначение пользователям ролей из любых систем
-- назначения пользователям ролей из систем, для которых пользователь является администратором
-- настройка пользователей от любых провайдеров (может заводить пользователей, редактировать атрибуты и назначать роли при наличии одного из предыдущих двух действий)
-- настройка пользователей от провайдера, к котором относится пользователь - должна быть возможность логического отключения отдельных пользователей, провайдеров аутентификации и привязок пользователей к провайдерам
- должна быть возможность массового добавления пользователей из внешнего провайдера, а также массового назначения/отмены назначения ролей
Lefest commented
Хотелось бы, чтоб при этом была бы возможность или отключить кеширование прав при авторизации из внешних систем, или иметь возможность настраивать время жизни данного кеша. Например раз в 10 минут.
toksy commented
В рамках работы платформы , авторизация таким образом дорабатывать не будет.