概要
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プログラムをコンパイルし実行します。
以下のようにデータが取得できることを確認します。