概要
本記事ではSpotfireのインフォメーションリンクを使用してTDVからデータを取得する方法について説明します。
OAuth2によるSSO(シングルサインオン)を利用して、Spotfireで認証したユーザーと同一のユーザーアカウントとしてTDVへの認証を行います。
本手順で設定を行う前にOpenID ConnectでSpotfireにログインができることを前提としています。
OpenID Connectによるログイン方法は以下の記事を参照ください。
OpenID Connectを用いたSpotfire の認証設定
また、TDV側でのクレームの設定とIdPでのグループとユーザーの設定が完了していることを前提にしています。以下の記事を参照してください。
検証環境
製品 | バージョン | 備考 |
---|---|---|
TDV Server |
8.7.0 |
RHEL8環境で実行 |
TIBCO Spotfire Server |
12.5.0 |
Windows Server 2019環境で実行 |
検証を行ったIdPはAzureADとOktaです。
検証環境ではSpotfire 12.5.0を使用しています。
本機能はSpotfire12.3以降で利用可能です。LTSである12.0系では利用できませんのでご注意ください。
データソーステンプレートの追加
Configuration Toolを開き「Data Source Templates」タブを開き、「New」ボタンから新しいデータソーステンプレートを追加します。
追加のための画面が開いたら、「Name」には任意の表示名を入力し、「Data Source Template」には以下のXMLを追加します。(画像はAzure ADを使用した際の例です。)
以下はAzureADを使用した例です。
本例では「AzureADを使用したOAuth2ドメインの設定方法」にて「openid」を使ってscopeの実装を行っているので同様にscopeに「openid」を使用しています。お使いのIdPアプリケーションに追加したscope名を使用してください。
<jdbc-type-settings>
<type-name>tdv_oauth2_azure</type-name>
<driver>cs.jdbc.driver.CompositeDriver</driver>
<connection-url-pattern>jdbc:compositesw:dbapi@<server>:<port9401>?domain=<domain>&dataSource=<data_source></connection-url-pattern>
<connection-properties>
<connection-property>
<key>user</key>
<value>dummy</value>
</connection-property>
<connection-property>
<key>password</key>
<value>dummy</value>
</connection-property>
</connection-properties>
<credentials-provider-class>com.spotfire.ws.im.ds.sql.TokenCredentialsProvider</credentials-provider-class>
<credentials-provider-init-params>
<parameter>
<key>issuer</key>
<value>https://login.microsoftonline.com/xxxxxxxxxxxxxxxxxxxxxxxxxxx/v2.0</value>
</parameter>
<parameter>
<key>scope</key>
<value>api://xxxxxxxxxxxxxxxxxxxxx/openid</value>
</parameter>
<parameter>
<key>access_token_property_name</key>
<value>AccessToken</value>
</parameter>
</credentials-provider-init-params>
<supports-catalogs>true</supports-catalogs>
<supports-procedures>true</supports-procedures>
<supports-schemas>true</supports-schemas>
<use-ansii-style-outer-join>true</use-ansii-style-outer-join>
<metadata-provider>com.spotfire.ws.im.ds.sql.composite.CompositeMetadataProvider</metadata-provider>
</jdbc-type-settings>
以下はOktaの例です。
<jdbc-type-settings>
<type-name>tdv_oauth2_okta</type-name>
<driver>cs.jdbc.driver.CompositeDriver</driver>
<connection-url-pattern>jdbc:compositesw:dbapi@<server>:<port9401>?domain=<domain>&dataSource=<data_source></connection-url-pattern>
<connection-properties>
<connection-property>
<key>user</key>
<value>dummy</value>
</connection-property>
<connection-property>
<key>password</key>
<value>dummy</value>
</connection-property>
</connection-properties>
<credentials-provider-class>com.spotfire.ws.im.ds.sql.TokenCredentialsProvider</credentials-provider-class>
<credentials-provider-init-params>
<parameter>
<key>issuer</key>
<value>https://xxxxxxxxxxxxxxx/oauth2/default</value>
</parameter>
<parameter>
<key>scope</key>
<value>groups</value>
</parameter>
<parameter>
<key>access_token_property_name</key>
<value>AccessToken</value>
</parameter>
</credentials-provider-init-params>
<supports-catalogs>true</supports-catalogs>
<supports-procedures>true</supports-procedures>
<supports-schemas>true</supports-schemas>
<use-ansii-style-outer-join>true</use-ansii-style-outer-join>
<metadata-provider>com.spotfire.ws.im.ds.sql.composite.CompositeMetadataProvider</metadata-provider>
</jdbc-type-settings>
「issuer」と「scope」の値は利用するIdPに合わせて設定してください。
追加したものにチェックがついていることを確認して、「Save Configuraition」から設定を保存して、Spotfire Serverを再起動します。
動作確認
管理者権限を持つユーザーで「インフォメーションデザイナー」を開きます
「データソースのセットアップ」から接続情報を入力します。
「名前」は任意に入力可能です。
「タイプ」は追加したデータソーステンプレートものを選択してください。
「接続先」はTDVへの接続先情報を入力してください。
以下は入力例です。
jdbc:compositesw:dbapi@txxxxxxxxxxxxxxxxxx.com:9401?domain=azure&dataSource=demo
「認証方式」はIDプロバイダ(Oauth2)になっていることを確認します。
保存して、IdPに登録されたアカウントでログインし直します。同様に管理者権限が必要です。
先ほど設定したデータソースをクリックしてデータソースを接続します。このときデータソースへの認可が行われるため再度ログインダイアログが表示されることがありますが、ログインをクリックします。
データソースに接続が成功した後はインフォメーションリンクを作成してデータを取得できることを確認します。
ここでは「既定のインフォメーションモデルの作成」から作成しています。
作成したインフォメーションリンクから「データのオープン」をクリックします。
データキャンバスを開き、データが取得できていることを確認します。
以上でTDVを接続先としたOAuth2認証によるインフォメーションリンク設定は完了です。