Каковы основные принципы развертывания Keycloak вместе с 1С для реализации двухфакторной аутентификации через OpenID?

Мне нужна помощь с интеграцией 1С и Keycloak. У меня есть два вопроса: 

1) Если я разверну Keycloak отдельно на виртуальной машине под управлением Linux, потребуется ли мне установить сертификат Let's Encrypt для порта 8080, и будет ли он нужен, если Keycloak будет использоваться только внутри локальной сети для двухфакторной аутентификации? 

2) Если я решу развернуть Keycloak на той же виртуальной машине, что и Nginx reverse proxy, то, с одной стороны, это даст возможность использовать wildcard-сертификат, но, с другой стороны, возникают вопросы масштабируемости. 

В общем, мне важно понять, нужно ли выводить Keycloak в интернет, или только 1С будет обращаться к нему извне?
  • 3 апреля 2025 г. 7:05
Ответы на вопрос 2
Интеграция Keycloak с 1С для реализации двухфакторной аутентификации через OpenID требует продуманного подхода к развертыванию и конфигурации. Давайте рассмотрим ваши вопросы.

### Вопрос 1: Необходимость сертификата Let's Encrypt для Keycloak

1. **Сертификат Let's Encrypt**: Если вы развертываете Keycloak на виртуальной машине под управлением Linux и планируете использовать его только внутри локальной сети, то установка SSL-сертификата не является обязательной. Внутренняя сеть обычно не требует шифрования, если у вас нет требований по безопасности. Однако, если вы хотите обеспечить безопасность и защиту данных (например, если данные передаются через общие сети), то стоит рассмотреть использование самоподписанных сертификатов или сертификатов Let's Encrypt даже для внутренних соединений.

2. **Публичный доступ**: Если вы планируете, чтобы реализация двухфакторной аутентификации через Keycloak использовалась из внешних источников (например, для веб-приложений, которые доступны из Интернета), тогда вам нужно будет использовать сертификат, чтобы избежать проблем с безопасностью и уязвимостями, связанными с незашищенным соединением.

### Вопрос 2: Размещение Keycloak совместно с Nginx

1. **Размещение Keycloak и Nginx на одной VM**: Это действительно может упростить использование wildcard-сертификата, так как вы сможете направить все запросы через Nginx к Keycloak, обеспечивая более легкую настройку и управление. Nginx может выступать в роли обратного прокси, принимая входящие соединения и далее перенаправляя их к Keycloak. Это также может предоставить дополнительные возможности для кэширования, балансировки нагрузки и управления запросами.

2. **Масштабируемость**: Если вы планируете на будущее масштабировать, то стоит учитывать, что размещение всех компонентов на одной машине может стать ограничением. В случае высоких нагрузок или необходимости высокой доступности, имеет смысл разделить сервисы на разные виртуальные машины. Вы сможете использовать Nginx для маршрутизации запросов между несколькими экземплярами Keycloak или другими сервисами. Это обеспечит лучшую масштабируемость и гибкость в архитектуре ваших приложений.

### Вывод: 

- Если использование Keycloak планируется только внутри локальной сети, сертификаты не являются строгой необходимостью, однако, для повышения безопасности стоит их использовать.
- Если вы планируете выходить в интернет, следует установить действующий SSL-сертификат.
- Размещение Nginx и Keycloak на одной виртуальной машине может упростить настройку, но помните о будущем расширении и возможной необходимости масштабирования архитектуры ваших приложений.

В зависимости от ваших конкретных требований и среды, вы можете выбрать подход, который оптимально соответствует вашим потребностям.
У меня сделано так 
1) KC в докере , трафик идет через Traefik , там же серт получает на морду
2) Nginx выступает как Reverse Proxy.

В целом этой схемы достаточно, чтоб сделать аутентификация через OIDC ( а там внутри еще и домен привязан )
1C сначала идет на Nginx -> Traefik -> KC , там происходит магия и 1С пускает нас. Что в локалке, что из вне

В твоем случае, можешь поставить куда угодно и через Nginx и Lets Enc сделать Wild серт и уже трафик гнать на KC
Похожие вопросы