
パート1. LDAP認証の構成。
OTRSをActive Directoryと統合する前に、アカウントとその役割を決定する必要があります。 次のアカウントが必要です。
- エージェント-テクニカルサポートスペシャリスト。
- ルートユーザー(非常に重要なポイント-ルートユーザーアカウントのユーザー名とパスワードは、OTRSの管理者アカウントのユーザー名とパスワードと一致する必要があります);
- 実際、技術サポートを申請するOTRSユーザー。
- Active Directoryを読み取るアカウント。
root @ localhostアカウントのActive Directoryの類似物として、ログイン「root」で「Admin OTRS」アカウントを使用します。
Active Directoryユーザーとコンピュータースナップインで、新しいユーザーを作成します。

アカウントを作成するときは、「次回ログイン時にパスワードの変更が必要」のチェックを外すことを忘れないでください。
テクニカルサポートスペシャリストとユーザーのアカウントが既に存在していると想定しています。 そうでない場合は、類推によって作成します。
重要 :すべてのユーザーはメールアドレスを持っている必要があります。 これは、すべてのOTRSユーザーの前提条件です。
この例では、OTRSで働くすべてのテクニカルサポートスペシャリストがOTRSagentsグループのメンバーになります。 これは、システムのアクセス権を区切る際の重要なポイントです。
Active DirectoryユーザーとコンピュータースナップインでOTRSagentsグループを作成します。 グループの範囲はグローバルです。 グループタイプ-セキュリティ。 グループのメンバーを、以前に作成されたOTRS管理者アカウント(rootユーザー名)と必要なテクニカルサポートスペシャリストにします。
OTRSがActive Directoryを読み取るために使用するユーザーアカウントを持つことも重要です。 便宜上、このアカウントのパスワードの有効期間は無制限にする必要があります。

http://localhost/otrs/index.plリンクをたどり、root @ localhostとしてログインします。

次に、[管理]、[エージェント管理]、[エージェント]タブに移動します。

ルート@ localhostアカウントを選択します。

変更を行っています。 このアカウントのユーザー名とパスワードは、Active Directoryで作成したAdmin OTRSアカウント(ルートログイン)のユーザー名とパスワードと一致する必要があることに注意してください。
root @ localhostログインをrootに変更し、それぞれパスワードを変更します。 [電子メール]フィールドに電子メールアドレスを設定します(この例では、特にtestdomainはメールサーバーとして機能します)。 [送信]ボタンをクリックします。

最後のステップは、ファイルc:\ otrs \ Kernel \ Config.pmを編集することです。
この例では:
- ドメインtest.testdomain.ru
- ドメインコントローラーIP-10.0.0.11
- Active Directoryの読み取りアカウントはhelpdesk@test.testdomain.ruで、パスワードはQwerty123です。
- OTRSエージェントグループ-ユーザーコンテナ内のOTRSエージェント。
次の構成は、「独自の構成設定を挿入してください」という行の後に挿入されます。
Config.pm
# insert your own config settings "here" # # #-------------------LDAP-----------------# $Self->{'DefaultCharset'} = 'utf-8'; # LDAP $Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP'; $Self->{'AuthModule::LDAP::Host'} = '10.0.0.11'; $Self->{'AuthModule::LDAP::BaseDN'} = 'dc=test, dc= testdomain,dc=ru'; $Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName'; # , , , OTRS $Self->{'AuthModule::LDAP::GroupDN'} = 'cn=OTRSagents,cn=Users,dc=test,dc=testdomain,dc=ru'; $Self->{'AuthModule::LDAP::AccessAttr'} = 'member'; $Self->{'AuthModule::LDAP::UserAttr'} = 'DN'; $Self->{'AuthModule::LDAP::SearchUserDN'} = 'helpdesk@test.testdomain.ru'; $Self->{'AuthModule::LDAP::SearchUserPw'} = 'Qwerty123'; $Self->{'AuthModule::LDAP::Params'} = { port => 389, timeout => 120, async => 0, version => 3, sscope => 'sub' }, # Agent data sync against LDAP $Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP'; $Self->{'AuthSyncModule::LDAP::Host'} = '10.0.0.11'; $Self->{'AuthSyncModule::LDAP::BaseDN'} = 'dc=test, dc=testdomain,dc=ru'; $Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName'; $Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'helpdesk@test.testdomain.ru'; $Self->{'AuthSyncModule::LDAP::SearchUserPw'} = 'Qwerty123'; $Self->{'AuthSyncModule::LDAP::UserSyncMap'} = { UserFirstname => 'givenName', UserLastname => 'sn', UserEmail => 'mail', }; $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [ 'users', ]; # # # Authenticate customer users against an LDAP backend # $Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP'; #LDAP $Self->{'Customer::AuthModule::LDAP::Host'} ='10.0.0.11'; $Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'dc=test, dc=testdomain,dc=ru'; $Self->{'Customer::AuthModule::LDAP::UID'} = 'sAMAccountName'; $Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = 'helpdesk@test.testdomain.ru'; $Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = 'Qwerty123'; $Self->{CustomerUser} = { Module => 'Kernel::System::CustomerUser::LDAP', Params => { Host => '10.0.0.11', BaseDN => 'dc=test, dc=testdomain,dc=ru', SSCOPE => 'sub', UserDN => 'helpdesk@ test.testdomain.ru', UserPw => 'Qwerty123', AlwaysFilter => '(&(samAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))', SourceCharset => 'utf-8', DestCharset => 'utf-8', }, ReadOnly => 1, CustomerKey => 'sAMAccountName', CustomerID => 'mail', CustomerUserListFields => ['givenname', 'sn', 'mail'], CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'], CustomerUserSearchFields => ['displayName','sAMAccountName','givenName', 'sn', 'mail','description'], CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'], CustomerUserSearchPrefix => '', CustomerUserSearchSuffix => '*', CustomerUserSearchListLimit => 10000, CustomerUserPostMasterSearchFields => ['displayName','sAMAccountName','givenName','sn','mail','description'], CustomerUserNameFields => ['givenname', 'sn'], # CustomerUserExcludePrimaryCustomerID => 0, CacheTTL => 120, Map => [ # [ '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' ], ], }; #--------------------------------------------
ファイルへの変更を保存し、Apacheサービスを再起動します。 問題がある場合、サービスは開始されません。 ログ(c:\ otrs \ var \ log)を読み取り、エラーを修正します。
エージェントのリンクhttp://localhost/otrs/index.plをたどります。 ルートアカウントを確認することを忘れないでください。 また、リンクhttp://localhost/otrs/customer.plにアクセスし、単純なユーザーのアカウントの下に移動します。

すべてが機能します! アクティブツリーとのOTRS統合の設定が完了しました。
パート2.エンドツーエンド(シングルサインオン)認証の構成。
Kerberosトークンの作成
認証のために、Apacheはいわゆるキータブを必要とします。 それを生成するには、プロトコル(HTTP)、OTRSサーバーの完全修飾ドメイン名、およびドメイン名が必要です。 プロトコル名とドメイン名は大文字でなければなりません。 通常のドメインユーザーも必要です。
ドメインコントローラーのコマンドプロンプトで、次の操作を行います。
Ktpass -princ HTTP/helpdesksrv.test.testdomain.ru@TEST.TESTDOMAIN.RU -mapuser helpdesk@test.testdomain.ru -pass Qwerty123 -out C:\helpdesksrv.keytab
出力では、ドライブCのルートにファイルがあります。 その後、ファイルの名前をhelpdesksrv.keytabからapache.keytabに変更し、c:\ Apache2 \ conf \フォルダーに配置しました(ファイル名は関係ありません)。
MIT Kerberos for Windows 4.0.1のインストール
MIT Kerberosをダウンロードしてインストールします。

インストールは簡単で、機能はありません。
MIT Kerberosを構成する
空のファイルc:\ Program Files(x86)\ MIT \ Kerberos \ krb.iniを作成して入力します。例のように大文字と小文字が区別されます。 ここで、TESTDC1はドメインコントローラーの名前です。
krb.ini
[logging] default = c:/otrs/var/log/krb5libs.log kdc = c:/otrs/var/log/krb5kdc.log admin_server = c:/otrs/var/log/kadmind.log [libdefaults] debug=true default_keytab_file = c:/Apache2/conf/apache.keytab default_realm = TEST.TESTDOMAIN.RU dns_lookup_kdc = false krb4_config = /etc/krb.conf krb4_realms = /etc/krb.realms kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true [realms] TEST.TESTDOMAIN.RU = { kdc = TESTDC1.test.testdomain.ru admin_server = TESTDC1.test.testdomain.ru default_domain = test.testdomain.ru } [domain_realm] .test.testdomain.ru = TEST.TESTDOMAIN.RU test.testdomain.ru = TEST.TESTDOMAIN.RU [login] krb4_convert = true krb4_get_tickets = false [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }
Apache 2.2用のmod_auth_kerb.soをダウンロードします*。c:\ Apache2 \ modulesフォルダーにコピーします。
Apacheを構成する
ファイルc:\ Apache2 \ conf \ httpd.confを変更します。 次の行を追加して再起動します。
httpd.conf
# LoadModule auth_kerb_module modules/mod_auth_kerb.so <Directory "c:/otrs/bin/cgi-bin/"> # OTRS c:/otrs AllowOverride None AuthType Kerberos AuthName "OTRS Kerberos Authentification" # keytab- Krb5Keytab c:/Apache2/conf/apache.keytab KrbAuthRealms TEST.TESTDOMAIN.RU KrbMethodNegotiate on KrbSaveCredentials off Require valid-user Options +ExecCGI -Includes Order allow,deny Allow from all </Directory>
OTRSを構成する
ファイルc:\ otrs \ Kernel \ Config.pmを編集し、次の行を追加します。
Config.pm
# + LDAP #+ single sign on # ------- --------- # $Self->{'AuthModule'} = 'Kernel::System::Auth::HTTPBasicAuth'; # $Self->{'AuthModule::HTTPBasicAuth::ReplaceRegExp'} = '@TEST.TESTDOMAIN.RU'; # ------ --------- $Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::HTTPBasicAuth'; $Self->{'Customer::AuthModule::HTTPBasicAuth::ReplaceRegExp'} ='@ EST.TESTDOMAIN.RU'; $Self->{CustomerUser} = { Module => 'Kernel::System::CustomerUser::LDAP', Params => { Host => '10.0.0.11', BaseDN => 'dc=test, dc=testdomain,dc=ru', SSCOPE => 'sub', UserDN => 'helpdesk@test.testdomain.ru', UserPw => 'Qwerty123', SourceCharset => 'utf-8', DestCharset => 'utf-8', }, CustomerKey => 'sAMAccountName', CustomerID => 'mail', CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'], CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'], CustomerUserPostMasterSearchFields => ['mail'], CustomerUserNameFields => ['givenname', 'sn'], Map => [ # note: Login, Email and CustomerID needed! # var, frontend, storage, shown, required, storage-type [ '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' ], ], };
Apacheサービスを再起動します。 http://helpdesksrv/otrs/customer.plをチェックアウトします 。 リダイレクトされ、ブラウザーのアドレスバーの行はhttp://helpdesksrv/otrs/customer.pl?Action = CustomerTicketOverview; Subaction = MyTicketsに変わります。

krakozyabryを排除します
ユーザーがWebインターフェースを介してアプリケーションを作成します。 エージェントインターフェースを開いて、アプリケーションのユーザー名が正しく表示されないことを確認します。

どうやら、パラメータの挿入
$Self->{'DefaultCharset'} = 'utf-8';
ファイルc:\ otrs \ Kernel \ Config.pmが正常に動作しません。
ファイルc:\ otrs \ Kernel \ cpan-lib \ Apache \ DBI.pmを変更し、次の行を追加します
$dbh->{'mysql_enable_utf8'} = 1; $dbh->do('SET NAMES utf8');
Apacheサービスを再起動します。

これで、ユーザー名が正しく表示されます。
以上です。 私の経験があなたに役立つことを願っています。