SmartDB to Okta ID発行

「SmartDB」とOktaを連携することで、ID発行の申請・承認・発行の管理を「SmartDB」で行うことが可能です。

SmartDB申請画面例

SmartDBプロセス設定例

※本連携にはAPIトークンを1つ利用します(オプション契約)。

連携方法

フォームにOktaへ連携する部品を配置

部品データがOktaに連携されます​
(プログラム上では部品キーを指定します)
プロセス「通知ロボット」Webhookの設定
連携プログラムの構成
今回はAzure Functionを利用しています。
そのほかサーバレス環境にて同様に連携が可能です。
プロセス「通知ロボット」Webhookから呼び出される関数サンプル
ここでは「03【通知ロボット】Okta ID登録」で呼び出すOktaへIDを登録する処理を記述しています。​
実際の連携処理では、所属グループなどをOktaアカウントに設定したり、実行結果を 「SmartDB」 に返す処理などが追加されます。

関数サンプル

index.js
// smartdb-node-sdk の読み込み
const smartdb = require('@dreamarts/smartdb-node-sdk’);
// okta-sdk-nodejs の読み込み
const okta = require('@okta/okta-sdk-nodejs');
module.exports = async function (context, req) {
  // SmartDB SDK 初期化(パラメータは環境変数に設定)
  await smartdb.initialize({
      url           : process.env.SDB_HOST,
      accessToken : process.env.SDB_ACCESS_TOKEN,
      hmacSecretKey : process.env.SDB_HMAC256_KEY
    },
    req, true);
  // SmartDB から文書データを取得
  const binderId = req.body.startDoc.binderId;
  const recordId = req.body.startDoc.recordId;
  const doc = await smartdb.getDocumentValue(binderId,recordId);
  // Okta セッションを生成(パラメータは環境変数に設定)
  const client = new okta.Client({
    orgUrl : process.env.OKTA_ORG_URL,
    token : process.env.OKTA_ACCESS_TOKEN
  });
  // 文書データから Okta アカウントデータを作成
  const oktaUser = {
      profile: {
        firstName : doc.FirstName,
        lastName : doc.LastName,
        email : doc.Email,
        login : doc.LoginId,
      }
  };
  // Okta アカウントの追加処理を実行
  await client.createUser(oktaUser);
  return;
}

※環境変数の値はお使いのサーバレス環境にて設定ください。
※「FirstName」「LastName」「Email」「LoginId」はバインダで定義した部品キーを指定してください。

関連情報

APIを利用し外部システムと連携しよう

SAMLによる認証はできますか