概要
OktaやAzure ADをIdPとして利用するOAuth2.0ドメインを設定済みのTDV Server上で公開されるデータサービスに対し、IdPから払い出されたアクセストークンをもとに接続する方法について説明します。
本記事で示す例では、以下の方法でTDVデータサービスを利用します。
- Webサービス(REST)の場合:
- 利用者のローカルPC(Windows10)上で実行するPostmanから対象のTDVデータサービス(REST)に対し、リクエストを実行します。
- データベース(JDBC)の場合:
- 利用者のローカルPC(Windows10)からJavaアプリケーションを介し、リモートサーバーで実行中のTDV Server上で公開されているサンプルデータサービスにJDBCで接続します。
検証環境
製品 | バージョン |
---|---|
TDV Server |
8.7.0 |
アクセストークン取得
TDV Serverに設定済みのOAuth2ドメインにおいて利用されているIdPからアクセストークンを取得します。
本記事では、OktaとAzure ADからアクセストークンを取得する例を示します。
Okta
トークンURLからアクセストークンを取得します。
取得したアクセストークンをjwt.ioでデコードすると以下のように内容を確認できます。
Azure AD
トークンURLからアクセストークンを取得します。
取得したアクセストークンをjwt.ioでデコードすると以下のように内容を確認できます。
Webサービス(REST)利用
TDV Serverで公開したWebサービス形式(REST)のデータサービスを取得したアクセストークンを利用して実行します。
事前準備
実行する公開済みWebサービスにおいて、事前に「HTTPベアラーを有効にする」をtrueにセットしておく必要があります。
リクエスト実行
取得したアクセストークンをセットした状態で公開済みWebサービスにリクエストを実行し、正常にデータが取得されることを確認します。
データベース(JDBC)利用
Javaプログラム作成
シンプルなJavaプログラムSelectExampleOAuth.Java
を作成します。
ここでは、以下のように、アクセストークンのみで接続しクエリを実行する処理を記述します。
import java.util.*; import java.sql.*; public class SelectExampleOAuth { public static void main(String[] arg) throws Exception { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { String url = "jdbc:compositesw:dbapi@:<ポート>?domain=<ドメイン名>&dataSource=<接続先公開データベース名>&AccessToken=<header>.<payload>.<signature>"; // Load driver Class.forName("cs.jdbc.driver.CompositeDriver"); // Create connection conn = DriverManager.getConnection(url); // Create statement stmt = conn.createStatement(); // Execute statement rs = stmt.executeQuery("<実行するクエリ>"); // Get column count ResultSetMetaData rsmd = rs.getMetaData(); int columns = rsmd.getColumnCount(); // Get results while (rs.next()) { for (int i = 0; i < columns; i++) { Object o = rs.getObject(i + 1); if (o == null) { System.out.print("[NULL]"); } else { System.out.print(o.toString()); } System.out.print(" "); } System.out.println(); } } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } }
<>
で囲われた箇所は実際に接続するTDV Server環境やアクセストークンの内容に応じて適宜置換してください。
実際の環境に接続可能なプログラムの例を以下に示します。
プログラム実行
作成したJavaプログラムをコンパイルし実行します。
以下のようにデータが取得できることを確認します。