Этот вопрос в основном относится к модели безопасности, где Keycloak, Angular и NodeJS называются примерами технологий. Я не (обязательно) ищу фрагменты кода; но в основном это «лучшие практики» использования этих технологий.
Опыт пользователя, к которому я стремлюсь, таков.
Аутентифицированному пользователю должен быть представлен пользовательский интерфейс, который применим к его профиль, например, сотрудник, руководитель, менеджер, генеральный директор и т. д. c.
Для реализации этого опыта, во-первых, мне нужно построить Управление пользователями , охватывающее прохождение подготовки ( корпоративный каталог, такой как LDAP, et c.), проверка учетных данных (пароль, 2FA, et c.) и управление учетными данными (длина пароля, срок действия, «забытый пароль» и др. c.). Я знаю, Keycloak поддерживает это (и, возможно, даже больше).
На стороне пользовательского интерфейса у меня есть два варианта.
Вариант 1 - без серверной проверки для авторизации
Рассмотрим приложение Angular, которое обрабатывает только вход в систему. После успешной аутентификации пользователя предположим, что Keycloak отвечает значением профиля, которое было изначально установлено при настройке пользователей. Затем это приложение вызывает /app/<profile>
, которое обслуживает Angular приложение , специфицирующее c для этого профиля.
Преимущество
- Серверная часть уверена что запрос всегда авторизован, потому что представленный пользовательский интерфейс не будет отображать несанкционированные функции.
Недостаток
- Столько Angular приложений, сколько профилей.
Вариант 2 - внутренняя проверка для авторизации
Полное приложение Angular обслуживается независимо от профиля, который может (или не может) быть возвращен Keycloak. После завершения аутентификации для реализации проверки авторизации можно использовать NodeJS адаптеров .
Advantage
Недостаток
- Каждое действие из пользовательского интерфейса должно быть проверено NodeJS через Keycloak.
Вопросы
- Можно ли обслуживать только одно приложение Angular, которое может динамически отключать функции на основе
profile
, возвращенного Keycloak? - Исходя из этой страницы , можем ли мы заставить Keycloak отвечать с зарегистрированным профилем пользователя?
- Можно ли каким-либо образом «кэшировать» проверки авторизации, чтобы уменьшить ups?
- Как вошедший в профиль пользователя "каскад" на другие движки, из бэкэнда NodeJS, такого как база данных, темы Kafka и т. д. c.?