Zammad: Интеграция аутентификации LDAP

Созданный на 4 нояб. 2016  ·  49Комментарии  ·  Источник: zammad/zammad

Zammad пожелание Маркуса Пфейлера:
«Пожалуйста, предоставьте какой-нибудь плагин / интеграцию аутентификации LDAP, иначе мы не сможем использовать систему продажи билетов для чего-либо :( outh с учетными записями facebook и google не вариант в любой компании с более чем 10 сотрудниками - в идеале эти каналы блокируются в первую очередь линия обороны не зря :)"

feature backlog proposal

Самый полезный комментарий

Есть новости по этому поводу?

Все 49 Комментарий

это дубликат № 58?

@wagnst Это новый выпуск, № 58 старый и уже закрыт.

Примечание. В первом квартале 2017 года мы работаем над функциями, готовыми к работе для предприятий, которые будут включать интеграцию с LDAP. Следите за обновлениями.

@rolfschmidt , возможно, ADFS с OAuth2 является краткосрочным решением

Есть новости по этому поводу?

Поддержка LDAP была бы невероятной. Есть новости о том, когда мы увидим эти функции, и какие другие корпоративные функции внедряются?

Какие-нибудь Новости? Первый квартал 2017 года подходит к концу :)
Есть ли шанс получить это в апрельском обновлении?

Да, эта функция была бы отличной!
В нашей организации около 4000 пользователей и 50 агентов, и мы планируем заменить OTRS на Zammad. Но без аутентификации LDAP это не имеет смысла.

Небольшое обновление, мы находимся в состоянии тестирования. По крайней мере, в следующем выпуске будет доступна интеграция с бета-тестированием LDAP (и после этого выпуска мы называем его стабильным).

Небольшой превью о том, как его использовать (любые отзывы приветствуются — мы постарались сделать его максимально простым (с автоматическим определением настроек ldap) — способ Zammad):
ldap-preview

@bchynds

Поддержка LDAP была бы невероятной. Есть новости о том, когда мы увидим эти функции, и какие другие корпоративные функции внедряются?

Корпоративные функции: наиболее важным из них является управление ролями (и другие, такие как вне офиса и обмена).

Это выглядит красиво. Мы с нетерпением ждем возможности протестировать это с нашими 25 000 пользователей, когда оно будет доступно.

Это выглядит красиво. Мы с нетерпением ждем возможности протестировать это с нашими 25 000 пользователей, когда оно будет доступно.

🎉

Привет,

существует ли миграция/объединение существующих пользователей агента с LDAP?

существует ли миграция/объединение существующих пользователей агента с LDAP?

Для идентификации уже существующих пользователей необходимо выполнить поиск логина и адреса электронной почты в существующей пользовательской базе (один из них должен совпадать).

Всем привет,

Я только что заметил, что интеграция с ldap теперь находится в ветке delevop. Я сейчас в режиме тестирования и работаю над «Анализом записей с заданной конфигурацией ...» уже около 10 минут.

Но у нас в AD около 25 тысяч пользователей. Я подожду немного.

@Julian0o ты быстрый человек!

Я сейчас в режиме тестирования и работаю над «Анализом записей с заданной конфигурацией ...» уже около 10 минут.

Планировщик запущен? В нашей тестовой среде с 9 тыс. пользователей это занимает около 60 секунд.

PS: Вы также можете запускать фоновые задания в очереди вручную с помощью rails r 'Delayed::Worker.new.work_off'

-Мартин

Я поторопился :) Забыл указать роль администратора и теперь я обычный пользователь :)

@мартини
У вас есть совет, как это исправить? Мне просто не хватает OTRS Config.pm сейчас :D

Чтобы вернуть роль администратора, выполните следующие действия:

rails c
u = User.find_by(email: '[email protected]')
u.roles = Role.where(name: ['Agent', 'Admin'])
u.save!

Затем войдите снова, и вы администратор.

Спасибо! Теперь вторая попытка ;)

PS: Есть ли способ получить эти команды, не заглядывая глубоко в код?

PS: Есть ли способ получить эти команды, не заглядывая глубоко в код?

Большинство стандартных команд Rails. Но может нам стоит создать шпаргалку....

image

Первоначальная синхронизация заняла около 10 минут.
Теперь я получаю сообщение об ошибке:

An error occurred: Can't connect to '' on port '389', Connection refused - connect(2) for 127.0.0.1:389
Хост LDAP сконфигурирован как " ldaps://xxx.lan "

Изменить: сделать вторую попытку со строгим IP-адресом, а не с адресом DNS, где позади 5 IP-адресов.

Можно ли получить лог/production.log?

@martini Я могу отправить журнал на ваш почтовый адрес. Куда это должно идти?

@martini Я могу отправить журнал на ваш почтовый адрес. Куда это должно идти?

поддержка на zammad dot com

Хорошо, теперь все работает, и синхронизация идет. Теперь синхронизирую 45 минут с 6k/22k.
Синхронизирует ли OTRS пользователей?

Но почему я не могу изменить сопоставление uid? Мы используем имя пользователя для сопоставления входа агента.

И почему я могу сопоставить администратора и агента только как «роль». Отсутствует только управление ролями или это окончательное управление ролями?

Хорошо, теперь все работает, и синхронизация идет. Теперь синхронизирую 45 минут с 6k/22k.

Обратите внимание, мы работаем над тем, чтобы ускорить это (примерно в 3 раза быстрее).

Синхронизирует ли OTRS пользователей?

Агенты (и назначения ролей) синхронизируются в OTRS. Клиентов нет, что приводит к проблемам:

а) если клиент удален из ldap (история и проблемы с редакцией)
б) вы хотите искать билеты по атрибутам клиента - без обзора, без триггеров, без sla с атрибутами клиента (невозможно, потому что данные находятся в минимум 2 источниках данных)
c) проблемы с производительностью для запросов ldap (также могут быть связаны с сетью)

Но почему я не могу изменить сопоставление uid? Мы используем имя пользователя для сопоставления входа агента.

В настоящее время мы пытаемся автоматически определять все настройки. Если у вас есть идеи, как улучшить/дополнить настройки конфига.

И почему я могу сопоставить администратора и агента только как «роль». Отсутствует только управление ролями или это окончательное управление ролями?

Управление ролями будет в следующем выпуске (здесь вы можете определить роль с разрешениями). Если вы хотите протестировать его на своей установке (установка пакета), загрузите https://raw.githubusercontent.com/zammad/zammad/develop/app/assets/javascripts/app/controllers/role.coffee и снова прекомпилируйте ресурсы.

screen shot 2017-04-19 at 16 30 04

Хорошо, это имеет смысл.

Я только что заметил, что вы можете войти через samaccountname и Mail. Это хорошее поведение! Для нас: UPN = почтовый адрес

Я думаю, что время синхронизации не является проблемой, потому что это только начальная синхронизация, которая занимает некоторое время.

Совет по автоопределению тегов. Мы используем многие сервисы Microsoft (скайп для бизнеса, обмен,...). По умолчанию вы можете исключить все атрибуты, начинающиеся с "ms". Вам не нужна конфигурация обмена или настройки sip пользователей в Zammad (я думаю). Это может все ускорить.
Моя учетная запись имеет атрибуты около 45 мс.

Для ролевого плагина мне нужна дополнительная информация или поиск в Google;) Я загрузил файл, но не знаю, как предварительно скомпилировать активы.

РЕДАКТИРОВАТЬ: я нахожу хороший способ установить плагин роли!

Сейчас вдруг синхронизация остановилась... Уже перезапустил все службы и сервер полностью. Любые советы, чтобы перезапустить синхронизацию?

Уже сделал rails r 'Delayed::Worker.new.work_off'

Обновление: Заммад сделал это сам! 👍
Просто ждал и вдруг синхронизация закончилась!

Загружает ли синхронизация фотографии из активного каталога? Мы сохраняем их в атрибуте thumbnailPhoto.

Следующий вопрос: Как часто выполняется синхронизация? Теперь прошло 24 часа, а новой синхронизации не было.

Загружает ли синхронизация фотографии из активного каталога? Мы сохраняем их в атрибуте thumbnailPhoto.

Не сейчас. Но хорошая идея!

Следующий вопрос: Как часто выполняется синхронизация? Теперь прошло 24 часа, а новой синхронизации не было.

В таблице планировщика есть задание, которое запускает синхронизацию каждый час (конечно, скрипт/scheduler.rb должен быть запущен).

Проверьте, существуют ли задания через консоль rails:

Scheduler.where(name: 'Import Jobs')

Чтобы (повторно) создать задание, выполните:

Scheduler.create_or_update(
  name:          'Import Jobs',
  method:       'ImportJob.start_registered',
  period:        1.hour,
  prio:          1,
  active:        true,
  updated_by_id: 1,
  created_by_id: 1
)

=> #<:отношение i="5">]>

Но веб-интерфейс говорит:
Последняя синхронизация

20.04.2017 09:30 - 20.04.2017 09:51

Привет @Julian0o. Не могли бы вы проверить Setting.get('import_backends') ? Должна быть запись LDAP. Если это так, запустите команду ImportJob.all и опубликуйте результат. Имейте в виду, что выходные данные содержат конфиденциальные данные, такие как PW и ваше сопоставление в атрибуте payload . Содержимое payload неактуально и может быть полностью удалено.

Вывод слишком велик для вставки из рубиновой консоли. Есть ли способ получить вывод в файл?

Извините, я полный рубиновый нуб :)

Пожалуйста, попробуйте ImportJob.last.attributes.except('payload').inspect , так как нас интересует только последний запуск. Если он все еще слишком велик, вы можете использовать File.write('/tmp/zammad_ldap.txt', ImportJob.last.attributes.except('payload').inspect) , чтобы записать его в файл /tmp/zammad_ldap.txt .

irb(main):001:0> ImportJob.last.attributes.except('payload').inspect
=> "{\"id\"=>10, \"name\"=>\"Import::Ldap\", \"dry_run\"=>false, \"result\"=>{\"skipped\"=>122, \"created\"=>10, \"updated\"=>27, \"unchanged\"=>22256, \"failed\"=>0, \"sum\"=>22415, \"role_ids\"=>{3=>{\"created\"=>10, \"updated\"=>25, \"unchanged\"=>22220, \"failed\"=>0}, 2=>{\"created\"=>0, \"updated\"=>2, \"unchanged\"=>36, \"failed\"=>0}, 1=>{\"created\"=>0, \"updated\"=>1, \"unchanged\"=>5, \"failed\"=>0}}}, \"started_at\"=>Fri, 21 Apr 2017 08:32:15 UTC +00:00, \"finished_at\"=>Fri, 21 Apr 2017 08:44:07 UTC +00:00, \"created_at\"=>Fri, 21 Apr 2017 08:32:15 UTC +00:00, \"updated_at\"=>Fri, 21 Apr 2017 08:44:07 UTC +00:00}"

РЕДАКТИРОВАТЬ: это изменилось

Last sync

21.04.2017 10:32 - 21.04.2017 10:44

Спасибо! Хм, это странно 🤔 Не могли бы вы предоставить вывод этого утверждения:
ImportJob.where(name: 'Import::Ldap', dry_run: false).order(created_at: :desc).limit(1).first.attributes.except('payload').inspect

Этот же оператор используется интерфейсным контроллером LDAP , отвечающим за визуализацию текста.

Я почти уверен, что вы это сделали, но просто из соображений здравомыслия: вы пытались перезагрузить страницу?

irb(main):001:0> ImportJob.where(name: 'Import::Ldap', dry_run: false).order(created_at: :desc).limit(1).first.attributes.except('payload').inspect
=> "{\"id\"=>12, \"name\"=>\"Import::Ldap\", \"dry_run\"=>false, \"result\"=>{\"skipped\"=>110, \"created\"=>0, \"updated\"=>14, \"unchanged\"=>14176, \"failed\"=>0, \"sum\"=>22415, \"role_ids\"=>{3=>{\"created\"=>0, \"updated\"=>14, \"unchanged\"=>14145, \"failed\"=>0}, 2=>{\"created\"=>0, \"updated\"=>0, \"unchanged\"=>31, \"failed\"=>0}, 1=>{\"created\"=>0, \"updated\"=>0, \"unchanged\"=>5, \"failed\"=>0}}}, \"started_at\"=>Fri, 21 Apr 2017 10:33:07 UTC +00:00, \"finished_at\"=>nil, \"created_at\"=>Fri, 21 Apr 2017 10:33:07 UTC +00:00, \"updated_at\"=>Fri, 21 Apr 2017 10:40:31 UTC +00:00}"

Я заметил это утром после загрузки компьютера. Так что я сделал жесткую перезагрузку :)
Теперь идет синхронизация. Возможно, это была проблема с одним таймером.

Странно 🤔 Мне тоже нравится. Хорошо, просто дайте нам знать, если есть что-нибудь.

Привет!

Я также попробовал LDAP-коннектор и столкнулся с той же проблемой, что и Julian0o ( https://github.com/zammad/zammad/issues/350#issuecomment -295259450 ), и не объявлял никакой группы администраторов. Итак, благодаря @martini я использовал фрагмент рельсов, чтобы вернуть себе роль администратора.

Я так и не завершил LDAP-импорт, но группы, похоже, уже были синхронизированы.
Теперь у моего пользователя все еще есть роль клиента, и я не могу изменить какие-либо настройки.
image

К счастью, я все еще могу выполнять задачи администратора, поэтому я создал независимого пользователя-администратора, но до сих пор не могу ничего изменить в первом пользователе.

Любые идеи по этому поводу?

Я смог решить эту проблему, снова запустив команды martinis rails. 👍

Но у меня есть еще один вопрос — нормально ли, что групповые разрешения синхронизируются еще до того, как произойдет первоначальная синхронизация?
В моем случае я понял, что слишком много пользователей было бы синхронизировано, и вышел из Мастера подключения LDAP, но оказался в ситуации, описанной выше.

LDAP-импорт висит со вчерашнего дня
zammadldap
Можно ли остановить/перезапустить импорт?

Привет @SGVubmluZ0cK - не могли бы вы использовать консоль администратора rails и предоставить мне вывод каждой из следующих трех команд:

Setting.get('import_backends')

ImportJob.last.attributes.except('payload').inspect

ImportJob.where(name: 'Import::Ldap', dry_run: false).order(created_at: :desc).limit(1).first.attributes.except('payload').inspect

Спасибо!

Вот что говорит консоль администратора rails:

irb(main):004:0> Setting.get('import_backends')
=> ["Import::Ldap"]
irb(main):005:0> ImportJob.last.attributes.except('payload').inspect
=> "{\"id\"=>55, \"name\"=>\"Import::Ldap\", \"dry_run\"=>false, \"result\"=>{\"skipped\"=>2, \"created\"=>2, \"updated\"=>0, \"unchanged\"=>496, \"failed\"=>0, \"sum\"=>2403, \"role_ids\"=>{3=>{\"created\"=>2, \"updated\"=>0, \"unchanged\"=>493, \"failed\"=>0}, 2=>{\"created\"=>0, \"updated\"=>0, \"unchanged\"=>3, \"failed\"=>0}, 1=>{\"created\"=>0, \"updated\"=>0, \"unchanged\"=>1, \"failed\"=>0}}}, \"started_at\"=>Wed, 26 Apr 2017 09:57:42 UTC +00:00, \"finished_at\"=>nil, \"created_at\"=>Wed, 26 Apr 2017 09:57:42 UTC +00:00, \"updated_at\"=>Wed, 26 Apr 2017 10:00:11 UTC +00:00}"
irb(main):006:0> ImportJob.where(name: 'Import::Ldap', dry_run: false).order(created_at: :desc).limit(1).first.attributes.except('payload').inspect
=> "{\"id\"=>55, \"name\"=>\"Import::Ldap\", \"dry_run\"=>false, \"result\"=>{\"skipped\"=>2, \"created\"=>2, \"updated\"=>0, \"unchanged\"=>496, \"failed\"=>0, \"sum\"=>2403, \"role_ids\"=>{3=>{\"created\"=>2, \"updated\"=>0, \"unchanged\"=>493, \"failed\"=>0}, 2=>{\"created\"=>0, \"updated\"=>0, \"unchanged\"=>3, \"failed\"=>0}, 1=>{\"created\"=>0, \"updated\"=>0, \"unchanged\"=>1, \"failed\"=>0}}}, \"started_at\"=>Wed, 26 Apr 2017 09:57:42 UTC +00:00, \"finished_at\"=>nil, \"created_at\"=>Wed, 26 Apr 2017 09:57:42 UTC +00:00, \"updated_at\"=>Wed, 26 Apr 2017 10:00:11 UTC +00:00}"

Большое спасибо!

Привет @SGVubmluZ0cK - на первый взгляд у меня все хорошо. Конечно, это не так. Не могли бы вы создать новую проблему? Есть несколько вопросов о вашей системе/настройке, которые мне нужно знать, чтобы копнуть глубже. Также есть запрос к вашему файлу production.log , было бы здорово, если бы вы его предоставили.
Пожалуйста, также скопируйте и вставьте вывод команд сверху в свою новую задачу, чтобы у нас все было на месте. Спасибо!

Привет , @Julian0o . Проблема, из-за которой Zammad удалил ваши назначения ролей из-за отсутствия сопоставления групп LDAP с ролями Zammad, исправлена ​​с помощью коммита выше. Пользователи теперь сохранят свои локальные назначения ролей, если сопоставление не указано. Но если сопоставление указано, LDAP является ведущим источником для назначения ролей. Обратная связь приветствуется 🤓

Привет, ребята. Возможна ли аутентификация через ADFS или на картах для будущих выпусков? 😃

Привет @kmclea16!

Да, ADFS возможна, поскольку Zammad использует великолепный гем omniauth для аутентификации и синхронизации пользователей через сторонних поставщиков. Уже есть гем , который предоставляет ADFS для omniauth.

Однако в ближайшее время реализовать это не планируется, но это должно быть не так уж сложно . Кто знает, может быть, кто-то может предоставить запрос на вытягивание? Было бы здорово, если бы вы создали новую тему для этого.

Аутентификация LDAP теперь готова к предстоящему выпуску Zammad версии 1.6 🎉 Не стесняйтесь открывать новые вопросы, если у вас возникли проблемы с этой функцией.

@ kmclea16 - было бы здорово увидеть проблему с ADFS или даже запрос на включение 👀

Была ли эта страница полезной?
0 / 5 - 0 рейтинги