Okta のデータ のPostgreSQL インターフェースを作成

加藤龍彦
加藤龍彦
デジタルマーケティング
Okta JDBC Driver のリモート機能を使用し、データアクセス用のPostgreSQL エントリポイントを作成します。

PostgreSQL には多くの対応クライアントがあります。標準のドライバーからBI、アナリティクスツールまで、PostgreSQL はデータ接続の人気のインターフェースです。JDBC ドライバーを使用することで、簡単に任意の標準クライアントから接続できるPostgreSQL エントリポイントを作成できます。

Okta にPostgreSQL データベースとしてアクセスするには、CData JDBC Driver for Okta とJDBC foreign data wrapper (FDW) を使用します。この記事ではFDW をコンパイルしてインストールし、PostgreSQL サーバーからOkta にクエリを実行します。

JDBC データソースとしてOkta のデータに接続する

JDBC データソースとしてOkta に接続するには、以下が必要です。

  • Driver のJAR パス:JAR ファイルは、インストールディレクトリのlib サブフォルダにあります。
  • Driver クラス

    cdata.jdbc.okta.OktaDriver
    
  • JDBC URL: URL は、"jdbc:okta:" で始まり、セミコロンで区切られた名前と値の組み合わせで任意の接続プロパティを含めることができます。

    Okta に接続するには、Domain 接続文字列プロパティをお使いのOkta ドメインに設定します。 Okta はOAuth およびOAuthJWT 認証をサポートしています。

    OAuth認証

    OAuth で認証するには、AuthSchemeOAuth に設定する必要があります。また、カスタムOAuth アプリケーションを作成する必要があります。

    カスタムOAuth アプリケーションの作成

    Okta アカウントから:

    1. 管理者アカウントでOkta のデベロッパーエディションにサインインします。
    2. Admin Consoleで、Applications > Applications に移動します。
    3. Create App Integration をクリックします。
    4. Sign-in method は、OIDC - OpenID Connect を選択します。
    5. Application type は、Web Application を選択します。
    6. カスタムアプリケーションの名前を入力します。
    7. Grant TypeをAuthorization Code に設定します。トークンを自動的に更新したい場合は、Refresh Token もチェックしてください。
    8. コールバックURL を設定します。
      • デスクトップアプリケーションやヘッドレスマシンでは、http://localhost:33333 または任意の別のポート番号を使用します。ここで設定したURI が、CallbackURL プロパティになります。
      • Web アプリケーションの場合、コールバックURL を信頼できるリダイレクトURL に設定します。このURL は、アプリケーションへのアクセスが許可されたことを示すトークンを伴ってユーザーが戻ってくるWeb 上の場所です。
    9. Assignments セクションで、Limit access to selected groups を選択してグループを追加するか、グループの割り当ては一旦スキップします。
    10. OAuth アプリケーションを保存します。
    11. アプリケーションのGeneral タブに、アプリケーションのClient Id とClient Secret が表示されます。後で使用できるように、これらを記録してください。Client Id はOAuthClientId の設定に使用し、Client Secret はOAuthClientSecret の設定に使用します。
    12. Assignments タブを確認し、アプリケーションにアクセスする必要のあるすべてのユーザーがアプリケーションに割り当てられていることを確かめます。
    13. Okta API Scopes タブで、OAuth アプリケーションに付与するスコープを選択します。これらのスコープは、アプリが読み取り可能なデータを決定します。そのため、特定のビューに対するスコープを付与しないと、そのビューに対するクエリを実行する権限がドライバーに付与されません。各ビューに必要なスコープを確認するには、ヘルプドキュメントのデータモデル > ビュー のビュー固有のページを参照してください。

    OAuth 認証の詳細や、OAuthJWT 認証については、ヘルプドキュメントを参照してください。

    ビルトイン接続文字列デザイナ

    JDBC URL の構成については、Okta JDBC Driver に組み込まれている接続文字列デザイナを使用できます。JAR ファイルのダブルクリック、またはコマンドラインからJAR ファイルを実行します。

    java -jar cdata.jdbc.okta.jar
    

    接続プロパティを入力し、接続文字列をクリップボードにコピーします。

    Using the built-in connection string designer to generate a JDBC URL (Salesforce is shown.)

    以下は一般的なJDBC URL です。

    jdbc:okta:Domain=dev-44876464.okta.com;
    

JDBC FDW を構築する

FDW は、PostgreSQL を再コンパイルせずに、PostgreSQL の拡張機能としてインストールできます。例としてjdbc2_fdw 拡張子を使用します。

  1. ご使用のバージョンのJRE 共有オブジェクトから、/usr/lib/libjvm.so にシンボリックリンクを追加します。コマンド例:
    ln -s /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/libjvm.so /usr/lib/libjvm.so
    
  2. ビルドするには、以下のコマンドを実行してください。
    make install USE_PGXS=1
    

Okta のデータをPostgreSQL データベースとしてクエリする

拡張機能をインストールした後、以下のステップに従ってOkta へのクエリの実行を開始します。

  1. データベースにログイン
  2. データベースの拡張機能をロード
    CREATE EXTENSION jdbc2_fdw;
    
  3. Okta のオブジェクトを作成
    CREATE SERVER Okta
    FOREIGN DATA WRAPPER jdbc2_fdw OPTIONS (
    drivername 'cdata.jdbc.okta.OktaDriver',
    url 'jdbc:okta:Domain=dev-44876464.okta.com;',
    querytimeout '15',
    jarfile '/home/MyUser/CData/CData\ JDBC\ Driver\ for\ Salesforce MyDriverEdition/lib/cdata.jdbc.okta.jar');
    
  4. PostgreSQL デーモンに認識されているユーザーのユーザー名とパスワードのユーザーマッピングを作成
    CREATE USER MAPPING for postgres SERVER Okta OPTIONS (
    username 'admin',
    password 'test');
    
  5. ローカルデータベースに外部テーブルを作成
    postgres=# CREATE FOREIGN TABLE users (
    users_id text,
    users_Id text,
    users_ProfileFirstName numeric)
    SERVER Okta OPTIONS (
    table_name 'users');
    
Okta に対してSELECTコマンドを実行可能にする
postgres=# SELECT * FROM users;

おわりに

このようにCData JDBC Driver for Okta を使って簡単にOkta のデータを取得して検索対象にすることができました。ぜひ、30日の無償評価版 をお試しください。

はじめる準備はできましたか?

Okta Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

Okta Icon Okta JDBC Driver お問い合わせ

Okta データと連携するパワフルなJava アプリケーションを短時間・低コストで作成して配布できます。