OTRS v4とActive Directoryの統合。 シングルサインオン認証の構成

このマニュアルは、OTRSがインストールされた構成済みサーバーがすでに存在する場合を対象としています。 OTRS v4のWindows環境へのインストールに関する詳細なガイドは、 ここにあります

画像



パート1. LDAP認証の構成。



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を編集することです。

この例では:

  1. ドメインtest.testdomain.ru
  2. ドメインコントローラーIP-10.0.0.11
  3. Active Directoryの読み取りアカウントはhelpdesk@test.testdomain.ruで、パスワードはQwerty123です。
  4. 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サービスを再起動します。



画像



これで、ユーザー名が正しく表示されます。



以上です。 私の経験があなたに役立つことを願っています。



All Articles