OTRS 6 - AD 集成 - 域管理員使用者映射為代理,而不是 OTRS 管理員
我正在使用 ITSM 模組測試 OTRS 6。現在我只是在我們的 DEV 環境中測試它,所以如果它是最簡單的方法,那麼放棄一切並從頭開始不會有問題。我打算盡快將其投入生產,儘管如此。
我使用官方文件“按書”安裝它,它就像一個魅力!(編輯:安裝在 Ubuntu Server 18.04 LTS 上)我讓所有使用者使用 MySQL 上的使用者數據庫在本地進行身份驗證。我讓客戶、代理和管理員都能夠進行身份驗證並獲得正確的使用者面板。
在那之後,我已經能夠成功地將 OTRS 與我的 AD 集成,但有一個問題:我所有的 AD 使用者都被映射為客戶,我的所有域管理員(也屬於 OTRS_Admins AD 組)都是代理,並且…… . 我沒有帳戶來管理 OTRS。根本沒有管理員。
我該怎麼辦?如何將我的域管理員映射為 OTRS 管理員而不是代理?如何將我的一些域使用者映射為代理?難道我做錯了什麼?我完全迷路了。
官方文件並沒有太大幫助,而且我在 Google 上找不到任何有我特殊需要的人。
我的(編輯的)Config.pm:
$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP'; ### OTRS Admin Auth ### $Self->{'AuthModule::LDAP::Host'} = '192.168.179.2'; # AD Server $Self->{'AuthModule::LDAP::BaseDN'} = 'dc=test,DC=local'; # Domain $Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName'; $Self->{'AuthModule::LDAP::GroupDN'} = 'CN=OTRS_Admins,CN=Users,DC=test,DC=local'; #OTRS Admin group $Self->{'AuthModule::LDAP::AccessAttr'} = 'member'; $Self->{'AuthModule::LDAP::UserAttr'} = 'DN'; $Self->{'AuthModule::LDAP::SearchUserDN'} = 'svc_otrs'; #OTRS service user $Self->{'AuthModule::LDAP::SearchUserPw'} = 'Passw0rd'; #And its passwird $Self->{'AuthModule::LDAP::AlwaysFilter'} = ''; $Self->{'AuthModule::LDAP::Params'} = { port => 389, timeout => 120, async => 0, version => 3, sscope => 'sub' }; ### User Sync ### AD <==> DB OTRS (MySQL) $Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP'; $Self->{'AuthSyncModule::LDAP::Host'} = '192.168.179.2'; # AD SRV $Self->{'AuthSyncModule::LDAP::BaseDN'} = 'dc=test,DC=local'; # Domain $Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName'; $Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'svc_otrs'; $Self->{'AuthSyncModule::LDAP::SearchUserPw'} = 'Passw0rd'; $Self->{'AuthSyncModule::LDAP::UserSyncMap'} = { # DB -> LDAP UserFirstname => 'givenName', UserLastname => 'sn', UserEmail => 'mail', }; $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [ 'users', 'basic_admin', ]; $Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP'; $Self->{'Customer::AuthModule::LDAP::Host'} = '192.168.179.2'; $Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'dc=test,DC=local'; $Self->{'Customer::AuthModule::LDAP::UID'} = 'sAMAccountName'; $Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = 'svc_otrs'; $Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = 'Passw0rd'; $Self->{CustomerUser} = { Module => 'Kernel::System::CustomerUser::LDAP', Params => { Host => '192.168.179.2', # AD Server BaseDN => 'dc=test,DC=local', #Domain SSCOPE => 'sub', UserDN =>'svc_otrs', #OTRS Service User UserPw => 'Passw0rd', #its password AlwaysFilter => '(&(samAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))', SourceCharset => 'utf-8', DestCharset => 'utf-8', }, CustomerKey => 'sAMAccountName', CustomerID => 'mail', CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'], CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'], CustomerUserSearchPrefix => '', CustomerUserSearchSuffix => '*', CustomerUserSearchListLimit => 10000, CustomerUserPostMasterSearchFields => ['mail'], CustomerUserNameFields => ['givenname', 'sn'], Map => [ # note: Login, Email and CustomerID needed! #[ 'UserSalutation', 'Title', 'title', 1, 0, 'var' ], [ 'UserFirstname', 'Firstname', 'givenname', 1, 1, 'var' ], [ 'UserLastname', 'Lastname', 'sn', 1, 1, 'var' ], [ 'UserLogin', 'Login', 'sAMAccountName', 1, 1, 'var' ], [ 'UserEmail', 'Email', 'mail', 1, 1, 'var' ], [ 'UserCustomerID', 'CustomerID', 'mail', 0, 1, 'var' ], [ 'UserPhone', 'Phone', 'telephonenumber', 1, 0, 'var' ], #[ 'UserAddress', 'Address', 'postaladdress', 1, 0, 'var' ], #[ 'UserComment', 'Comment', 'description', 1, 0, 'var' ], ], };
事實上,這是一個三部分的問題:
- 當我使用 LDAP 後端時,我從 DB 後端失去了我的使用者(包括 root@localhost 超級使用者)
- 來自 LDAP 後端的代理使用者沒有管理員權限
- OTRS 文件在這里和那裡有點過時
問題 1:失去了我的 DB 後端 在
Config.pm
中,我插入了以下行來選擇代理後端:
$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
好吧,這條線的作用是覆蓋系統中其他地方的原始後端選擇器。因此,為了擁有 DB Backend Admin 使用者和 LDAP 代理使用者,您應該使用 OTRS 自己(並記錄在案!)的方式來擁有多個後端,即將數字後綴附加到模組實例(請注意 de 1緊隨其後
AuthModule
):
$Self->{'AuthModule1'} = 'Kernel::System::Auth::LDAP';
當然,您必須將數字放入所有模組的屬性中:
$Self->{'AuthModule::LDAP::Host1'} = '192.168.xx.xx'; $Self->{'AuthModule::LDAP::BaseDN1'} = 'dc=test,DC=local'; $Self->{'AuthModule::LDAP::UID1'} = 'sAMAccountName'; $Self->{'AuthModule::LDAP::GroupDN1'} = CN=GS_OTRS_Agents,CN=Users,DC=test,DC=local'; $Self->{'AuthModule::LDAP::AccessAttr1'} = 'member'; $Self->{'AuthModule::LDAP::UserAttr1'} = 'DN'; $Self->{'AuthModule::LDAP::SearchUserDN1'} = 'OTRS'; #OTRS LDAP User $Self->{'AuthModule::LDAP::SearchUserPw1'} = 'somepass'; #Password for the LDAP User $Self->{'AuthModule::LDAP::AlwaysFilter1'} = ''; $Self->{'AuthModule::LDAP::Params1'} = { port => 389, timeout => 120, async => 0, version => 3, sscope => 'sub' };
(將其與上面發布的程式碼進行比較,關於原始問題。)
公平地說,OTRS 管理手冊中有一節解釋瞭如何更改後端,以及如何擁有多個後端。但是,如果您使用
$Self->{'AuthModule'}
而不是$Self->{'AuthModule1'}
將覆蓋本機數據庫後端,而不是並排執行,則缺少資訊。花了很多死腦筋來解決這個問題。這解決了我的管理員使用者失去的問題,這些使用者都在原始數據庫後端。所有 LDAP 代理都不是完全管理員,因此他們可以回答工單,但不能以管理員身份管理 OTRS 系統。有了這個,我有兩種使用者。
這就引出了第二個問題。
問題 2:來自 LDAP 後端的代理使用者沒有管理員權限
我的意思是,我必須能夠在我的 AD 上創建代理使用者,並且他/她也應該能夠成為管理員。他們是!
`$Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [ 'users', ];`
如果不只是“使用者”,我還在該列表中添加了“basic_admin”,那麼我所有的初始代理也將是管理員。稍後我可以撤銷他們的管理員權限,但是由於問題 1,我被鎖定在 OTRS 之外,沒有管理員使用者,我無法授予或撤銷任何人的任何管理員權限。
畢竟,我選擇保留它,並將我的代理創建為使用者,因為我已經將我的原始 root@localhost 使用者作為管理員(因為我已經解決了問題 1),並且將為所有人手動授予管理員權限我未來的管理員。但這是 OTRS 管理手冊中另一個沒有很好記錄的細節。
問題 3:OTRS 管理手冊未完全更新
我知道,對於所有開源項目,這種情況會不時發生。但是,由於誤導性資訊,這裡到處都有一些陷阱,這些陷阱是從未更新的以前版本的 OTRS 繼承而來的。例如,手冊中提到了一些屬性,但對版本 6 無效。
我偶然發現了一個適用於版本 5 並且沒有從版本 6 中清除的版本。我的意思是,指向屬性的 QuickRef 頁面的連結已被刪除,因為該頁面 - 以及該屬性 - 不再存在,但它仍然在其他地方提到在手冊中,關於重要的配置部分。