Zammad: 集成 LDAP 身份验证

创建于 2016-11-04  ·  49评论  ·  资料来源: zammad/zammad

Markus Pfeiler 的 Zammad 愿望:
“请提供某种 LDAP 身份验证插件/集成,否则我们无法将票务系统用于任何事情 :( 在任何拥有 10 名以上员工的公司中,都不能选择使用 facebook 和 google 帐户 - 理想情况下,这些渠道首先会被阻止有充分理由的防线:)”

feature backlog proposal

最有用的评论

有这方面的消息吗?

所有49条评论

这是 #58 的副本吗?

@wagnst这是新问题,#58 是旧的并且已经关闭。

注意:我们正在为 2017 年第一季度开发“企业就绪”功能,其中包括 LDAP 集成。 敬请关注。

@rolfschmidt也许带有 OAuth2 的 ADFS 是一个短期解决方案

有这方面的消息吗?

LDAP 支持将是不可思议的。 关于我们何时会看到这些功能以及正在实施哪些其他企业功能的任何更新?

任何新闻? 2017 年第一季度即将过去 :)
有机会在四月更新中获得这个吗?

是的,这个功能会很棒!
我们是一个拥有大约 4000 名用户和 50 名代理的组织,我们计划用 Zammad 取代 OTRS。 但是如果没有 LDAP 身份验证,它就没有任何意义。

小更新,我们处于测试状态。 至少在下一个版本中会有一个 beta 测试 LDAP 集成可用(在那个版本之后,我们称之为稳定版)。

关于如何使用它的小预览(欢迎任何反馈 - 我们试图使其尽可能简单(通过自动检测 ldap 设置) - Zammad 方式):
ldap-preview

@bchynds

LDAP 支持将是不可思议的。 关于我们何时会看到这些功能以及正在实施哪些其他企业功能的任何更新?

企业特性:最重要的一个是角色管理(以及其他如外出和交换)。

看起来不错。 期待在可用时与我们的 25k 用户进行测试。

看起来不错。 期待在可用时与我们的 25k 用户进行测试。

🎉

你好,

现有代理用户是否使用 LDAP 迁移/合并?

现有代理用户是否使用 LDAP 迁移/合并?

要识别现有用户,请在现有用户群中搜索登录名和电子邮件地址(其中一个必须匹配)。

你好呀,

我刚刚注意到 ldap 集成现在在 delevop 分支中。 我现在处于测试模式,它正在“分析具有给定配置的条目......”大约 10 分钟。

但是我们的 AD 中有大约 25,000 个用户。 我会等一会儿。

@Julian0o你是快人!

我现在处于测试模式,它正在“分析具有给定配置的条目......”大约 10 分钟。

调度程序是否启动? 在我们有 9k 用户的测试环境中,大约需要 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 地址而不是 5 个 IP 地址后面的 dns 地址。

可以获得日志/production.log 吗?

@martini我可以将日志发送到您的邮箱。 它应该去哪里?

@martini我可以将日志发送到您的邮箱。 它应该去哪里?

zammad dot com 的支持

好的,现在它的工作和同步正在进行中。 现在与 6k/22k 同步 45 分钟。
OTRS 是否也同步用户?

但是为什么我不能更改 uid 映射? 我们使用 userprincipalname 进行代理登录映射。

以及为什么我只能将管理员和代理映射为“角色”。 只是缺少角色管理还是这是最终的角色管理?

好的,现在它的工作和同步正在进行中。 现在与 6k/22k 同步 45 分钟。

只是一个通知,我们努力加快这个速度(大约快 3 倍)。

OTRS 是否也同步用户?

代理(和角色分配)在 OTRS 中同步。 客户没有,这会导致问题:

a) 如果客户从 ldap 中删除(历史和修订问题)
b) 您想通过客户属性搜索工单 - 没有概述、没有触发器、没有具有客户属性的 SLA(不可能,因为数据在最少 2 个数据源中)
c) ldap 查询的性能问题(也可能与网络相关)

但是为什么我不能更改 uid 映射? 我们使用 userprincipalname 进行代理登录映射。

目前我们尝试自动检测所有设置。 如果您有想法如何改进/丰富配置设置。

以及为什么我只能将管理员和代理映射为“角色”。 只是缺少角色管理还是这是最终的角色管理?

角色管理将在下一个版本中出现(在这里您可以定义具有权限的角色)。 如果您想在安装时测试它(安装包),请下载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 = Mailadress

我认为同步时间不是问题,因为它只是初始同步需要一段时间。

关于自动检测标签的建议。 我们使用许多微软服务(Skype for business、exchange、...)。 默认情况下,您可以排除所有以“ms”开头的属性。 您不需要 Zammad 中用户的交换配置或 sip 设置(我认为)。 这可以加快一切。
我的用户帐户有大约 45 毫秒的属性。

对于角色插件,我需要一些额外的信息或谷歌搜索;)我上传了文件,但不知道如何预编译资产。

编辑:我是安装角色插件的好方法!

现在突然同步停止了......已经完全重新启动了所有服务和服务器。 有什么重启同步的建议吗?

已经做rails r 'Delayed::Worker.new.work_off'

更新:Zammad 自己成功了! 👍
只是等待,突然同步完成!

是否同步下载照片 vom 活动目录? 我们将它们存储在 thumbnailPhoto 属性中。

下一个问题:同步多久运行一次? 现在是 24 小时后,没有新的同步。

是否同步下载照片 vom 活动目录? 我们将它们存储在 thumbnailPhoto 属性中。

不是现在。 不过是个好主意!

下一个问题:同步多久运行一次? 现在是 24 小时后,没有新的同步。

调度程序表中有一个作业每小时开始同步(当然 script/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
)

=> #<:relation i="5">]>

但是Webinterface说:
上次同步

20.04.2017 09:30 - 20.04.2017 09:51

@Julian0o - 你能检查一下Setting.get('import_backends')吗? 应该有一个 LDAP 条目。 如果是这样,请运行命令ImportJob.all并发布结果。 请注意,输出包含机密数据,例如 PW 和属性payload中的映射。 payload的内容不相关,可以完全删除。

输出太大,无法从 ruby​​ 控制台粘贴。 有没有办法在文件中获取输出?

对不起,我是个红宝石菜鸟:)

请尝试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 ,我使用了 rails 片段来恢复管理员角色。

我从未完成 LDAP 导入,但组似乎已经同步。
现在我的用户似乎仍然具有客户角色,我无法更改任何设置。
image

幸运的是,我仍然能够执行管理任务,因此我创建了一个独立的管理员用户,但仍然无法更改第一个用户的任何内容。

对此有什么想法吗?

我能够通过再次运行 martinis rails 命令来解决这个问题。 👍

但我还有一个问题 - 是否可以在初始同步之前同步组权限?
就我而言,我意识到太多的用户会被同步并退出 LDAP-Connection-Wizard,但发现自己遇到了上述情况。

LDAP-Import 从昨天开始就挂起
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 - 由于缺少 LDAP 组到 Zammad 角色映射,Zammad 删除了您的角色分配的问题已通过上述提交修复。 如果未指定映射,用户现在将保留其本地角色分配。 但是,如果指定了映射,则 LDAP 是角色分配的主要来源。 感谢反馈🤓

嗨,大家好。 是否可以通过 ADFS 进行身份验证,或者在未来版本的卡上进行身份验证? 😃

嗨@kmclea16!

是的, ADFS是可能的,因为 Zammad 使用伟大的 omniauth gem通过第三方提供商对用户进行身份验证和同步。 已经有一个为omniauth 提供ADFS 的gem。

不过近期没有计划实施,但应该不会那么难。 谁知道,也许有人可以提供拉取请求? 如果您可以为此创建一个新问题,那就太好了。

LDAP 身份验证现已为即将发布的 Zammad 1.6 版做好准备🎉 如果您在使用此功能时遇到问题,请随时打开新问题。

@kmclea16 - 很高兴看到 ADFS 问题甚至是拉取请求 👀

此页面是否有帮助?
0 / 5 - 0 等级