Loginapp#

Loginapp - веб приложение для конфигурации DropApp CLI с OIDIC.

Loginapp поддерживает три формата конфигурации:

  • файл конфигурации: флаг --config;

  • флаги: например, флаги --oidc-xxx;

  • переменные среды: каждый флаг предоставляет переменную среды с префиксом LOGINAPP_.

Пример синтаксиса команды:

loginapp serve [flags]

Синтаксис флагов loginapp представлен в таблице.

Таблица. Синтаксис флагов loginapp

Синтаксис

Описание

-c, --config string

Конфигурационный файл

-h, --help

Помощь для обслуживания

-l, --listen string

Интерфейс и порт прослушивания (по умолчанию 0.0.0.0:8080)

--metrics-port int

Порт для экспорта метрик (по умолчанию 9090)

-n, --name string

Имя приложения. Используется для веб-заголовка (по умолчанию LOGINAPP)

--oidc-client-id string

Идентификатор клиента (по умолчанию loginapp)

--oidc-client-redirecturl string

URL-адрес перенаправления для обратного вызова. Это должно быть то же самое, что и предоставленное IDP. Должен заканчиваться / callback

--oidc-client-secret string

Секрет клиента

--oidc-crossclients strings

Токен выпуска от имени этого списка идентификаторов клиентов

--oidc-extra-authcodeopts stringToString K/V

Cписок дополнительных кодов авторизации для включения в запрос токена (по умолчанию [])

--oidc-issuer-insecureskipverify

Пропустить проверку сертификата эмитента (для тестирования)

--oidc-issuer-rootca string

Центр сертификации эмитента

--oidc-issuer-url string

Полный URL эмитента перед путем /.well-known/openid-configuration

--oidc-offlineasscope

Выдача токен обновления для автономного доступа

--oidc-scopes strings

Список областей для запроса. Обновление этого параметра переопределит существующие области (по умолчанию [openid,профиль,электронная почта,группы])

-s, --secret string

Секрет приложения. Должен быть одинаковым во всех репликах сервера loginapp (это не секрет клиента OIDC)

--tls-cert string

Путь к сертификату TLS 1.2

--tls-enabled

Включить TLS 1.2

--tls-key string

Путь к закрытому ключу TLS 1.2

--web-assetsdir string

Каталог для поиска активов, которые переопределяют встроенные (по умолчанию /web/assets)

--web-kubeconfig-defaultcluster string

Имя кластера по умолчанию, используемое для полного вывода kubeconfig

--web-kubeconfig-defaultnamespace string

Namespace по умолчанию, используемое для полного вывода kubeconfig

--web-mainclientid string

Идентификатор клиента приложения

--web-mainusernameclaim string

Утверждение для использования в качестве имени пользователя (зависит от доступных утверждений IDP (по умолчанию email)

--web-templatesdir string

Каталог для поиска шаблонов, которые переопределяют встроенные (по умолчанию /web/templates)

Глобальные флаги:

-v, --verbose

Подробный вывод

Предварительные условия#

Предварительные условия развертывания:

  • конфигурация поставщика удостоверений (например, dex или Keycloak);

  • config.clientID, config.clientSecret и config.clientRedirectURL соответствуют учетным данным приложения, настроенным в поставщике удостоверений;

  • введен полный URL-адрес перед путем /.well-known/openid-configuration (например, для https://dex.example.org/dex/.well-known/openid-configuration это https://dex.example.org/dex);

  • создан файл config.issuerRootCA.configMap перед развертыванием loginapp;

  • ConfigMap содержит простой корневой ЦС (центр сертификации) эмитента в ключе config.issuerRootCA.key;

  • при настройках Ingress с разгрузкой SSL, отключен TLS 1.2 для loginapp с помощью команды config.tls.enabled: false.

Развертывание#

В таблице приведен список способов развертывания loginapp с различной конфигурацией:

Таблица. Список способов развертывания loginapp

Deployment

Service

Ingress

Certificate(s)

1

HTTP

NodePort/LoadBalancer

N/A

N/A

2

HTTPS

NodePort/LoadBalancer

N/A

Self-signed

3

HTTPS

NodePort/LoadBalancer

N/A

Custom

4

HTTP

ClusterIP

HTTP

N/A

5

HTTP

ClusterIP

HTTPS

Custom

6

HTTPS

ClusterIP

HTTPS

Self-signed / Custom

Внесите следующие конфигурации для настройки loginapp, соответствующих способам, представленным в таблице.

  1. Внесите конфигурацию сервиса для настройки loginapp, соответствующей номеру 1 в списке способов развертывания:

    service:
      type: NodePort 
      # Альтернативно - LoadBalancer
      nodePort: 32001 
      # Если выбран тип NodePort
    
    ingress:
      enabled: false
    
    config:
      tls:
        enabled: false
      clientRedirectURL: http://loginapp.example.org:32001/callback
      # Сайт приведен в качестве примера.
    
  2. Внесите конфигурацию сервиса для настройки loginapp соответствующей номеру 2 в списке способов развертывания:

    service:
      type: NodePort 
      # Альтернативно - LoadBalancer
      nodePort: 32001 
      # Если выбран тип NodePort
    
    ingress:
      enabled: false
    
    config:
      tls:
        enabled: true
        altNames:
        - loginapp.example.org:32001
      clientRedirectURL: https://loginapp.example.org:32001/callback
      # Сайт приведен в качестве примера.
    
  3. Внесите конфигурацию сервиса для настройки loginapp соответствующей номеру 3 в списке способов развертывания:

    service:
      type: NodePort # Альтернативно -  LoadBalancer
      nodePort: 32001 
      # Если выбран тип NodePort
    
    ingress:
      enabled: false
    
    config:
      tls:
        enabled: true
        secretName: loginapp-tls # Этот secret (kubernetes.io/tls) обязателен  
      clientRedirectURL: https://loginapp.example.org:32001/callback
      # Сайт приведен в качестве примера.
    
  4. Внесите конфигурацию сервиса для настройки loginapp соответствующей номеру 4 в списке способов развертывания:

    service:
      type: ClusterIP
    
    ingress:
      enabled: true
      hosts:
      - host: loginapp.example.org
        paths:
          - path: /
            pathType: ImplementationSpecific
    
    
    config:
      tls:
        enabled: false
      clientRedirectURL: http://loginapp.example.org/callback
      # Сайт приведен в качестве примера.
    
  5. Внесите конфигурацию сервиса для настройки loginapp соответствующей номеру 5 в списке способов развертывания:

    service:
      type: ClusterIP
    
    ingress:
      enabled: true
      hosts:
      - host: loginapp.example.org
        paths:
          - path: /
            pathType: ImplementationSpecific
    
      tls:
      - secretName: loginapp-tls # This secret (kubernetes.io/tls) must exist (or use Letsencrypt)
    
    config:
      tls:
        enabled: false
      clientRedirectURL: https://loginapp.example.org/callback
      # Сайт приведен в качестве примера.
    
  6. Внесите конфигурацию сервиса для настройки loginapp соответствующей номеру 6 в списке способов развертывания:

service:
  type: ClusterIP

ingress:
  enabled: true
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" # если используется nginx ingress
  hosts:
  - host: loginapp.example.org
    paths:
      - path: /
        pathType: ImplementationSpecific
  tls:
  - secretName: loginapp-tls

config:
  tls:
    enabled: true
  clientRedirectURL: https://loginapp.example.org/callback
  # Сайт приведен в качестве примера.