コンテンツまでスキップ

【Okta】Slack Enterprise GridのAdmin APIをOkta Workflowsで実行する方法

はじめに

こんにちは、 ネクストモード株式会社 テクニカルサポート担当です。

OktaのライセンスのひとつにOkta Workflowsがあります。このOkta WorkflowsはiPaaSとして70以上のSaaSコネクターや日付計算など関数が用意されており、組み合わせることでさまざまな自動化が行えます。

今回Slack Enterprise Gridで利用できるadmin.users.invite(Admin系API)にて有効期限付きシングルチャンネルゲストの招待を自動化しようとしましたが手間取ったので備忘録を兼ねて記事にします。

ちなみにSlack Enterprise Gridの検証環境はSlack Developer Programから取得可能です。

Okta Workflowsで用意されているSlackのコネクターについて

まずOkta WorkflowsにはSlack関連として以下の2つのコネクターが用意されています。それぞれさまざまなアクションカードが用意されています。その中にはCustom API Actionというコネクターの範囲で自由にAPIが実行できるカードが用意されています。

  • Slack
  • Slack Admin

Okta WorkflowsのコネクションでSlackとSlack Adminが表示されている画面です。

Slackはコネクションを作成する際にワークスペースしか選択できませんでした。これはOrgレベルで実行する必要があるAdmin系APIをCustom API Actionで実行することができないことを意味します。

Slack Adminに用意されているCustom API Actionではドキュメントに以下の記載があり、Admin系APIは実行できないことがわかりました。

Slack Adminコネクターがクエリを実行できるのはSlack内のSCIMエンドポイントだけであり、Slack内の他の管理APIでは使用できません。このようなユースケースではSlackコネクターを使用してください。

汎用APIコネクターの利用

Okta Workflowsには汎用的なAPIを実行できるコネクターが用意されています。

このコネクターを利用し、admin.users.inviteを実行してみます。

Slack App作成

admin.users.inviteのリファレンスを参照し、admin.users:write スコープを追加し、OrgレベルのSlack Appを作成し発行されたユーザートークンを控えます。

APIコネクターの利用

APIコネクターカードを追加し、以下のようにコネクションを作成します。

汎用APIコネクターでコネクションを設定している画面です。

このコネクションを利用してAPIコネクターカードのPOSTを設定します。

Flowの中でAPIコネクターカードのPOSTを設定している画面です。

スクリーンショットだとわかりづらいので以下に内容を紹介します。

リクエストURLは以下を指定します。

https://slack.com/api/admin.users.invite

Headerは以下を指定します。

{
 "Content-Type": "application/json; charset=utf-8"
}
 

Bodyに以下を指定しました。実際にはObjectのConstructカードを利用して動的に組み立てられる仕組みを実施しています。

{
"email_password_policy_enabled": false,
"guest_expiration_ts": "1755393631.000000",
"is_restricted": true,
"is_ultra_restricted": true,
"channel_ids": "C0xxxxxx",
"email": "user@example.com",
"team_id": "T08xxxxx"
}

 

まとめ

以上のように、Okta WorkflowsでSlack Enterprise GridのAdmin系APIを実行するには、汎用APIコネクターを活用することで実現できます。Slack Appの作成とスコープの設定は事前準備として必要ですが、一度コネクターを設定すれば、Slack App側でスコープを編集するだけで、さまざまなAdmin系APIを実行できるようになります。最小権限の原則に基づき、目的別にSlack Appを複数作成し、Okta Workflowsでも対応する汎用APIコネクターを作成・利用することができます。

また、汎用APIコネクターは、Slack Enterprise Grid以外でも、専用コネクターが提供されていないSaaSとの連携に活用できます。
この方法を活用して、ぜひワークフローの自動化にチャレンジしてみてください。