はじめに こんにちは、 ネクストモード株式会社 のSaaSおじさん久住です...
【Okta】SmartHRとOktaをOkta Workflowsコネクターで連携できるようになりました!!!
はじめに
こんにちは、 ネクストモード株式会社 のSaaSおじさん久住です
ネクストモードではID統合管理(IDaaS)のOktaを利用して各SaaSへのシングル・サインオンやプロビジョニングの一元管理をしています
2023年5月24日に開催されたOkta City Tour Tokyo 2023にて発表されたOktaとSmartHRの連携強化がこれまでの悩みを解決してくれる最高なアップデートの予感なので早速試してみようと思います!
OktaとSmartHRの連携
2022年3月にOkta Integration Network(OIN)にSmartHRが登録され、OktaとSmartHR間でのSCIMでのユーザープロビジョニングが実現できるようになりました
また、2022年5月にはSCIM連携により同期可能な属性が3つ(雇用形態、役職、部署情報)増えたことで、より細やかな属性同期が可能となっています
そして今回、SmartHRのWorkflowsコネクタがリリースされました!
今までのOINでの課題
OINでのSCIM連携で同期できる属性が少なく、SmartHRの属性をすべて同期することができないのでSCIM連携のみでは足りない部分が多くあります
そんなときに使えるのがOkta Workflowsで、SmartHRはAPIを開放しているのでWorkflowsで属性の同期をすることで上記の課題を解決できます
Okta Workflowsを活用したSmartHRとOktaの属性同期については下記エントリーで検証していますので是非御覧ください
なにが嬉しいのか
OIEの課題で記載したように、OINのアプリでは対応しきれない属性をOkta Workflowsを活用して属性の同期をする必要がありました
しかし、実際に設定しようとすると下記のように複雑な設定がWorkflows上で必要となり最初は心が折れそうになります
- APIエンドポイントの設定
- 同期する属性(フィールド)のマッピング設定
今回のアップデートで、Okta WorkflowsのプレビルドのSmartHRコネクターが提供されたので複雑な設定をせずにWorkflowsを活用することができます!
やってみた
リリースほやほやなのでウッキウキで試してみましょう!
前回のエントリーと同様に「SmartHRで社員番号等のユーザー属性を変更した際の既存Oktaユーザー属性が変更される」というケースを考えてみます
まずはSmartHRコネクターの追加の際にテナントの認可が必要となりますので事前にSmartHR側でAPIトークンを取得しておきましょう
つぎにWorkflowsコンソールからFlowの作成を実施し、イベントはスケジュールにします
つぎにAdd app actionをクリックし、SmartHRコネクターを追加します
SmartHRで実行するActionを選択します
今回はRead Employeeを試してみます
初めてSmartHRとのConnectionを作成する場合はNew Connectionをクリックします
次に取得したアカウントタイプ(Production / Sandbox)、テナントID、APIトークンを入力してCreateを押すとコネクターの作成完了です
テナントIDはSmartHRアカウントにサインインしたときにブラウザーに表示される URL の最初の部分です
SmartHRコネクターの接続が完了しましたら、早速Workflowsの設定を進めていきましょう!
Workflowsの流れとしては、下記のように作ってみました
- [Okta Scheduled Flow]スケジュールで発火
- [SmartHR Read Employee] 従業員情報取得(今回は従業員決め打ち)
- [List Find] SmartHRのカスタム従業員項目の「趣味」を取得
- [Okta Read User] 従業員メールアドレスからOkta ユーザーIDを取得
- [Okta Update User] Oktaユーザーのカスタム属性「hobby」をアップデート
SmartHRのRead Employeeカードではカスタム従業員項目を選択しています
こちらが検証の中で詰まったポイントなのですが、Object(List)型になっているため複数のフィールドを利用している場合はヘルパーフローを活用して情報を引っ張ってくる必要もあるかと思います
今回のテストユーザーは前回と同じく「久住 模太郎」さんに来ていただきました
同期前は作成したカスタム属性のhobbyは空欄となっています
スケジュール実行ですが、一旦強制的に動かしてみます(たくさん失敗しているのはご愛嬌です)
Oktaユーザーのプロファイルを確認するとhobby欄にSmartHRから同期されていることが確認できました!!
苦戦したところ
今回時間優先で検証をしましたが、最初に苦戦したところを少し記載してみます(僕の実力不足もあります)
SmartHRコネクターをトリガーにできない(2023年5月25日時点)
SmartHRはActionとしては使えますが、トリガー(イベント)には使えないので、別のイベント契機でWorkflowsを発火する必要があります
もし、SmartHRのユーザー情報更新を契機にOktaユーザー属性を更新したい場合はスケジュールなどを検討する必要がありそうです
カスタム従業員項目がList型
SmartHRのカスタム従業員項目は複数追加できるのでよく考えれば当たり前かもしれないですが、List型で定義されています
そのため、Object型と勘違いしていた僕は関数で値を取得する時に苦戦しました
最後に
OktaとSmartHRの連携をOkta Workflowsを利用してSCIMでは対応していない属性をSmartHRコネクターで連携する新機能をご紹介しました!
今回はほんのお試しで機能紹介にとどまりましたが、実際にSmartHRとOktaをどちら起点でユーザーを作成・更新・削除するか等を考えながら、他のActionも調査しつつ別記事を書いてみたいと思います