「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」はバインダで定義した部品キーを指定してください。