Дизайн безопасности Keycloak для приложения Angular + NodeJS - PullRequest
0 голосов
/ 02 мая 2020

Этот вопрос в основном относится к модели безопасности, где 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

  • One Angular приложение.

Недостаток

  • Каждое действие из пользовательского интерфейса должно быть проверено NodeJS через Keycloak.

Вопросы

  1. Можно ли обслуживать только одно приложение Angular, которое может динамически отключать функции на основе profile, возвращенного Keycloak?
  2. Исходя из этой страницы , можем ли мы заставить Keycloak отвечать с зарегистрированным профилем пользователя?
  3. Можно ли каким-либо образом «кэшировать» проверки авторизации, чтобы уменьшить ups?
  4. Как вошедший в профиль пользователя "каскад" на другие движки, из бэкэнда NodeJS, такого как база данных, темы Kafka и т. д. c.?
...