はじめに
Cognosの認証にISAM(TAM)を使用する場合、HTTPヘッダーに埋め込まれるユーザー情報はIV_USERになります。
さらに、IHSでcgiモジュールを使用している場合は、IV_USERがHTTP_IV_USERに変換された状態でCognosにリクエストが転送されます。
Cognosが提供するサンプルのカスタムJava認証を使用した環境で、HTTP_IV_USERを使用してSSOを構成するために必要なjavaファイルの変更箇所をまとめてみました。
※現時点ではCA 11.0.13に対して机上検証のみ実施しており、実際の動作は検証できていない状態です。参考にする場合は十分に検証してください。
修正手順
ますは修正対象のファイルを特定し、javaを修正します。その後、jarファイルをビルドしCognosに配置します。
修正ファイルの特定
まずは、sdkのサンプルとして提供されているJDBCSample配下で”REMOTE_USER"が使用されているファイルを検索します。下記のようにコマンドを実行することで、「DBCSample.java」と「RestorableJDBCSample.java」の中で使用されていることが確認できます。
[root@ JDBCSample]# pwd
/opt/ibm/cognos/sdk/sdk/java/AuthenticationProvider/JDBCSample
[root@ JDBCSample]#
[root@ JDBCSample]# grep REMOTE_USER -rl .
./JDBCSample.java
./RestorableJDBCSample.java
[root@ JDBCSample]#
JDBCSample.java
このファイルでREMOTE_USERが使用されているのは2行3か所あるので、それを修正します。
userNames = authRequest.getTrustedEnvVarValue("REMOTE_USER");
(中略)
SystemRecoverableException e = new SystemRecoverableException("Challenge for REMOTE_USER", "REMOTE_USER");
userNames = authRequest.getTrustedEnvVarValue("HTTP_IV_USER");
(中略)
SystemRecoverableException e = new SystemRecoverableException("Challenge for HTTP_IV_USER", "HTTP_IV_USER");
RestorableJDBCSample.java
このファイルでREMOTE_USERが使用されているのは1行2か所あるので、それを修正します。
SystemRecoverableException e = new SystemRecoverableException("Challenge for REMOTE_USER", "REMOTE_USER");
SystemRecoverableException e = new SystemRecoverableException("Challenge for HTTP_IV_USER", "HTTP_IV_USER");
ビルドの実行
ファイルの修正が完了したら、ビルドを実施しearファイルを作成します。
ここからの手順は、下記リンク先にあるとおりです。
https://qiita.com/shinyama/items/5231260ab707b2231139
認証のセットアップが完了したら、ISAM(TAM)からのSSO連携が可能か試してみます。
認証環境が無い場合は、FireFoxのmodify headerなどを使用することで検証できるはずです。