LoginSignup
0
0

More than 3 years have passed since last update.

Cognos Analytics SDK の AuthenticationProvider サンプルの説明

Posted at

概要

Cognos Analytics SDKをインストールすると、以下のフォルダに、SDKのカスタム認証用のサンプルが導入されます。
/opt/ibm/cognos/sdk/sdk/java/AuthenticationProvider

JDBCSampleは、以下を含め色々投稿しているので探してみて下さい。
Cognos SDK でカスタム認証プロバイダーを開発する時に参考になるJDBCSampleの説明
https://qiita.com/shinyama/items/33b6349916380b8fe960

それ以外のサンプル。すなわち以下の5点について、何に使うのだろう、というのを少し読み解きましたので、共有しておきたいと思います。
※恐らく自分も3日後には忘れそうなので、ある意味自分へのメモも兼ねてw
TrustedSignonSample
TrustedSignonReplaceSample
TrustedSignonMappingSample
MultiTenancyTenantProviderSample
MultiTenancyBoundingSetProviderSample

※ちなみに、マニュアルのこちらに一応記載があるのですが、読んでも全然わかりません。
https://www.ibm.com/support/knowledgecenter/en/SSEP7J_11.1.0/com.ibm.swg.ba.cognos.ca_dg_auth.doc/c_dg_auth_customauthenticationprovidersampleprograms.html

TrustedSignonSample

SSO S/Wとの連携で使う事が多いと思いますが、SSOポータルで認証後に、認証情報がクッキーに入ってCognosに投げられて来た時に、クッキーからユーザーIDを取り出し、HTTP Header変数にユーザーIDを入れて、認証ネームスペースに転送するような役割です。
転送先の認証ネームスペースは、LDAPで外部IDマッピングで受けても、JDBCSampleのようなカスタム認証で受けても、どちらでもSSOを成立させる事が可能です。

これは何度か実際のプロジェクトで使用した事がありますので、使用頻度はまあまあ有ります。詳細はこちらをご参照下さい。
Cognos SSO認証でCookieを使用するサンプル
https://qiita.com/shinyama/items/c7e9088e725b268102f1

TrustedSignonReplaceSample

基本的にCognosのSSOは、SSO SW側でHTTP Header変数に埋め込まれたユーザーIDを、LDAPでは外部IDマッピングで、JDBCSampleのようなカスタム認証ではjavaソースの中でHeader変数を読み取り、認証ソースにそのユーザーIDが存在するかを確認しSSOを成立させます。
しかしながら、SSO SW側のログイン時にユーザーIDのフォームに「ComputerName\Username」みたいに、\マーク(円マーク)を挟んでコンピューター名とユーザー名を入れてログインしてきた場合、Header変数に「ComputerName\Username」が埋め込まれてくると、Cognosが受け取って認証ソースのユーザーIDと一致させようとした時に、「ComputerName\」が邪魔をして、一致せずSSO認証エラーになったりします。
これを避けるために、この「TrustedSignonReplaceSample」があります。
TrustedSignonReplaceSampleクラスの中で、「ComputerName\Username」を「\」で区切って分割し、「Username」だけを取り出して再度Header変数に「Username」を入れて、認証ネームスペースに転送し、SSOを成立させる事ができます。

TrustedSignonMappingSample

前述の「TrustedSignonReplaceSample」のドメイン名に対処する版です。
SSO SW側で「Username@DomainName」でログインし、このままCognosに転送されて来た時に、「@DomainName」を外して「Username」を取り出してSSOを成立させるサンプルです。

MultiTenancyTenantProviderSample

まず、マルチテナントに関してご存じ無い方は、こちらの記事をご参照下さい。
Cognos Analyticsでのマルチテナントの設定
https://qiita.com/shinyama/items/683e38fc9826295ce0de

マルチテナントを簡単に言うと、LDAPに登録されているユーザーの「属性」を元に、Cognosコンテンツへのアクセス権限を制御できる機能、という感じです。
「属性」とは、「組織」とか「職位」とかを想像頂ければ、分かり易いかと思います。

この「MultiTenancyTenantProviderSample」は、そういう有効そうな「属性」がユーザー情報に持っていない場合でも、このMultiTenancyTenantProviderSampleクラスが読み込む「usersToTenants.properties」ファイルに、ユーザーIDとテナントIDのマッピングを記載しておく事で、テナントを分ける事ができます。
サンプルで提供されている、usersToTenants.propertiesファイルの内容は以下になります。

jkunze=TenantA
emichel=TenantA
eguimaraes=TenantB
ckim=TenantB
jolsen=TenantC

MultiTenancyBoundingSetProviderSample

このサンプルは、「MultiTenancyTenantProviderSample」の補助を行うもので、具体的には先のマルチテナントの記事の中で、さらに別の属性「departmentNumber」をテナントマッピングに使う件が出てきますが、それと同様に「ユーザーによってはメインのテナントだけでなく、別のテナントにも併せて参加したい」場合に、このサンプルを使用します。

提供されている、「usersToBoundingSets.properties」ファイルの内容を見ればイメージできるかと思いますが、eguimaraesさんは、以下のマッピングなので、先ほどのTenantBだけでなく、TeantAやTenantCにも参加している事になります。

jkunze=TenantA
emichel=TenantA
eguimaraes=TenantB,TeantA,TenantC
ckim=TenantB
jolsen=TenantC,TenantA
aaldridg=TenantA, TeanatB
twise=TenantB

以上です。
ちらっとでも見て覚えておけば、どこかで役に立つかもしれません。

0
0
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
0
0