Ad Widget

Collapse

SAML + вход по сертификатах

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • teddy
    Senior Member
    • Dec 2017
    • 234

    #1

    SAML + вход по сертификатах

    Коллеги!
    Есть zabbix 7.2 \ nginx \ postgresql
    Настраиваю аутентификацию по SAML. Логин \ пароль - уже работает. Но необходимо доработать для входа по сертификату.
    Проблема в том что zabbix в базовой настройке запрашивает ( точнее даже не забикс а библиотека ./vendor/onelogin/php-saml которая используется для SAML ) только парольную аутентификацию.
    Это написано в описании к библиотеке README.md
    Code:
    // Authentication context.
    // Set to false and no AuthContext will be sent in the AuthNRequest.
    // Set true or don't present this parameter and you will get an AuthContext 'exact' 'urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtecte dTransport'.
    // Set an array with the possible auth context values: array('urn:oasis:names:tc:SAML:2.0:ac:classes:Password', 'urn:oasis:names:tc:SAML:2.0:ac:classes:X509').
    'requestedAuthnContext' => false,
    Так же в README.md сказано что надо переименовать advanced_settings_example.php в advanced_settings.php и исправить соответствующий параметр. Но в какой папке должен лежать этот php ?

    Понятно что и на что надо поменять. Но вопрос а куда собственно надо положить файл advanced_settings.php чтоб он прочитался?
    если там где и *example* то не работает. все равно передается "PasswordProtectedTransport".
    Code:
    <samlp:RequestedAuthnContext Comparison="exact"> <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef> </samlp:RequestedAuthnContext>
    В readme так же написано что файл сертификата должен лежать в ./vendor/onelogin/php-saml/certs/ хотя на самом деле он работает из папки ./zabbix/ui/conf/certs/ что еще более запутывает дело. Понятно что пробовал положить
    advanced_settings.php в ./zabbix/ui/conf/ но тоже с нулевым результатом.

    Возможно я что то делаю неправильно? что именно?
    Last edited by teddy; 22-07-2025, 12:32.
  • teddy
    Senior Member
    • Dec 2017
    • 234

    #2
    я нашел "костильное" решение - модификация файла index_sso.php с внесением в него параметра
    Code:
    'requestedAuthnContext' => array('urn:oasis:names:tc:SAML:2.0:ac:classes:Password', 'urn:oasis:names:tc:SAML:2.0:ac:classes:X509')
    но это проблемный вариант поскольку при обновлении забыкса все это нужно опять руками добавлять. конфиг файла, который бы этим управлял - я не нашел. хотя что то похожее там есть, не хватает квалификации в php.
    настройки либы, которые я описал в топик-старте - явно в забиксе не используются ((

    Comment

    • teddy
      Senior Member
      • Dec 2017
      • 234

      #3
      Если кому нужно то костыль тут.
      Code:
      #!/bin/bash
      FileName="/usr/share/zabbix/ui/index_sso.php"
      if grep "'requestedAuthnContext' => array('urn:oasis:names:tc:SAML:2.0:ac:classes:Password', 'urn:oasis:names:tc:SAML:2.0:ac:classes:X509')" $FileName >/dev/nul; then
          echo Already pathed
      else
          if [ ! -f $FileName.origin ]; then
              cp $FileName $FileName.origin
              sed -i "s/'wantNameIdEncrypted' => (bool) \$saml_settings\['encrypt_nameid'\]$/'wantNameIdEncrypted' => (bool) \$saml_settings['encrypt_nameid'],\n\t\t'requestedAuthnContext' => array('urn:oasis:names:tc:SAML:2.0:ac:classes:Password', 'urn:oasis:names:tc:SAML:2.0:ac:classes:X509')/g" $FileName
          else
              echo "File $FileName.origin exist. Can't create backup file. Please remove it"
          fi
      fi
      Last edited by teddy; 23-07-2025, 16:51.

      Comment

      Working...