osTicketというオープンソースの問合せ管理システムがあります。
弊社の
Prootインシデント管理システムと同様に問題の共有ができるシステムです。
あるお客さまが、海外のベンダーと情報共有したいということで、このosTicketを試すことになりました。
お客さまのサーバにosTicketをダウンロードしてセットアップを行ったのですが、ログイン画面からユーザIDとパスワードを入力してもAuthentication Requiredと表示されるだけで、まったくログインできません。
お客さまは、データベースのバージョンなど環境が違うのではないかと疑いますが、こういうときに闇雲に環境を変更しても工数がかかるだけで効率的ではありません。
問題解決の近道は、情報収集と切り分けです。
まずはGoogleで
osTicket "Authentication Required" と検索すると、出るわ出るわ・・・約 13,900 件もありました。
困っている人が多いんですね。
オープンソースなので、ソースコードのここを修正したら解決した、とか環境設定を変更したら動いたというような情報が多かったのですが、残念ながら今回のケースはどれも当てはまらないようです。
しかたないので、覚悟を決めてソースコードを追いながら動作を確認すること数時間・・・
どうも認証には成功しているものの、セッション情報をページ遷移時に保持できていないようです。
そういえば検索した結果の中に「cookieを受付けない設定のブラウザではAuthentication Requiredになる」というものがありました。
そこでピンときたのですが、/etc/php.iniの中にsession.cookie_secureという設定があり、これがONになっているとSSL以外ではcookieを送信しない動作になるんでした。
さっそく確認してみるとやはり
session.cookie_secure = 1
になっています。これで原因が判明しました。
ただ、このサーバは別の用途にも利用していますので、かってにこの設定を変更するわけには行きません。
しかし、よく考えてみたらSSLならセッションは維持できるはずです。ログイン画面のurlを
https://~
に変えて試してみました。
すると、ログインも成功するし、どのページも正常に表示できます。
分かってみれば簡単なことでした。
今回、フォーラムなどをいろいろ調べて感じたのですが、オープンソースだからでしょうか、結構みなさん適当にソースコードを変更していますね。
何故か分からないけどここをこう修正したら動作した、などと書かれている情報の中にはあきらかに間違った修正をしている人もいますし、ソースコードのコメントには「ここからここまでは完全に動作を理解している場合以外は変更してはいけない」などとわざわざ書いてある箇所があるくらいです。
ちなみに、デバッグの過程でバグを2箇所ほど発見してしまいました。(^_^;
バグといってもCSSの画像パスの指定が違うというたわいもないものですが、やっぱりバグはあるもんだなと変に感心してしまいました。
ともあれ、オープンソースのシステムを確実に使いこなすにはそれなりのスキルが必要です。
少しでも不安がある場合は、弊社の
Prootインシデント管理システムをお勧めします。
機能も豊富ですし、月額9,800円でユーザ数無制限です。
K.M. 2011/06/17