LoginSignup
2
3

More than 5 years have passed since last update.

Cognos SDK でカスタム認証プロバイダーを開発する時に参考になるJDBCSampleの説明

Posted at

概要

Cognosを全く知らないけど、Javaを書けるというだけで、突然Cognosのカスタム認証プロバイダーの開発をやる事になってしまう方が良くいらっしゃいます。
カスタム認証プロバイダーとは、Cognos SDKのJavaでコーディングして、Cognosの認証・認可の機能自体を作ってしまうという話です。
通常Cognosでは、認証・認可のユーザー情報はLDAPに存在するものを利用しますが、LDAPを持っていないなど、なんらかの理由でユーザー情報をデータベースのテーブルに保持して、認証・認可を行いたい時などにカスタム認証プロバイダー(CJAP)は登場します。

このパターンで開発を行う場合、一から全てコードを書くという事はほぼ無く、JDBCSampleという、Cognos SDKのCJAPサンプルを元に開発するのが常です。

さて、そのJDBCSampleというのものを読み解く事から開発が始まりますが、Cognosを知らん人にはとってもわかりにくいと思いますので、読み取りポイントを投稿しておきたいと思います。

カスタム認証プロバイダー(JDBCSample)の構成

まず、Cognos SDKというモジュールをインストールする必要がありますが、インストールすると、以下のディレクトリにJDBCSampleが配置されます。
C:\Program Files\ibm\cognos\c10_64\sdk\java\AuthenticationProvider\JDBCSample

この中に、dbInit_db2.sql という、DB2用のテーブル作成DDLがあるので、これを流すと、ユーザー・グループ情報を保持するサンプル用のテーブルが作成できます。
014.PNG

同フォルダ上のbuild.batで、ビルドをするとCAM_AAA_JDBCSample.jarができあがるので、これを以下のフォルダに配置します。
C:\Program Files\ibm\cognos\c10_64\webapps\p2pd\WEB-INF\lib
※他にも諸々手順ありますが、詳細は以下のリンクを参照してください。
http://qiita.com/shinyama/items/1f9c7842a3966233a5d7

009.PNG

そしてCognos Configurationの認証でカスタムJavaプロバイダーのネームスペースを作成し、Javaクラス名に RestorableJDBCSample を指定すると、このクラスがメインクラスとして、認証時に呼び出されます。
008.PNG

さて、ようやく本題ですが、このRestorableJDBCSampleクラスの読み解きが肝ですので、以降に記載します。

RestorableJDBCSampleクラス

RestorableJDBCSampleクラスのソースは、以下にありますので開いてみましょう。
C:\Program Files\ibm\cognos\c10_64\sdk\java\AuthenticationProvider\JDBCSample\RestorableJDBCSample.java

initメソッド
まず簡単なところから、222行目からの init メソッドです。
013.PNG

これはサービスなどから、Cognosプロセスを起動したタイミングで読み込まれるメソッドです。
002.PNG

logoffメソッド
次も簡単な、113行目からのlogoffメソッドです。
011.PNG

Cognosにログインすると、こんなポータル画面(Cognos Connection)になるのですが、赤枠にある「ログオフ」という文字をクリックして、文字通りCognosからログオフする時に呼ばれるメソッドです。
003.PNG

logonメソッド
さて、次の54行目から始まるlogonメソッドが肝です。
当然ながらCognosにログインする時に呼ばれるメソッドですが、ソースを見ていると赤〇で示した、①getTrustedCredentialValues、②getCredentialValues、③getFormFieldValues、④getTrustedEnvironmentVaribleValue、って何でしょう、という話になります。
015.PNG

①getTrustedCredentialValuesとは
Cognosには、レポートを定期的に実行して、PDFに保存するとかする、スケジュールの機能があります。
こういう各レポートのエントリーの横にある、赤枠のアイコンでスケジュールを設定できます。
006.PNG

アイコンをクリックすると、以下のような画面になり、いつ・どういう形式でレポートを実行するかなど、設定ができます。
007.PNG

この設定を行うと、設定時刻になるとレポートが実行されるわけですが、レポート実行は誰のユーザーIDで行われるかというと、スケジュールを設定したユーザーのIDで、この設定時刻のレポート実行のタイミングで、実はこのユーザーIDで認証が走るイメージです。
スケジュール設定をした時にユーザー情報は保持されているのですが、それを呼び出して受け取るのが、このgetTrustedCredentialValuesになります。

②getCredentialValuesとは
こちらは、Cognos SDKでなんらかCognosを操作するためのプログラムを作成し、プログラムを外部から実行する時に、Cognosのアクセス時に認証を行う際に呼び出されます。
Cognos SDKの外部呼出しのプログラムなんて作ってないよ、という話であれば無視です。

③getFormFieldValuesとは
外部のWebページとか、Cognos Mashup ServiceからCognosにアクセスする際に、入力されたユーザーIDとパスワードを受け取る機能です。

④getTrustedEnvironmentVaribleValue
CognosでSSO(Single Sign On)を行う時には、基本的にHTTP Headerの環境変数に組み込まれたユーザーID情報を元にSSOを行いますが、こちらはカスタム認証でHTTP Headerの環境変数を受け取り、SSOを行うためのものです。

というあたりを覚えておくと、logonメソッドの読み取りが非常に楽になります。

searchメソッド
最後に、134行目から始まるsearchメソッドです。
012.PNG

Cognosで、権限付与などの認可の行為を行う時に、あるグループにユーザーを所属させたりとか、認証ソース上のユーザーを検索する事を行います。
こんな感じのCognos Administrationという管理画面で、「作成者」というグループにメンバーを登録しようとしています。赤枠の追加を押します。
004.PNG

するとこんな感じに認証ソース(Restorable)中のユーザー情報が参照できます。
右上の方に、もっと細かく条件指定してユーザーを検索する、「入力」「検索」という機能がありますが、これらの機能を実装するのもsearchメソッドの役割です。
005.PNG

ざっとですが、以上です。

実際のCognosの画面上の機能と、ソースコードの記載のマッピングを理解しないと開発は始められないので、カスタム開発の最初の一歩のお役に立てればと思います。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3