SaaS

テレフォニープロバイダを利用し、Okta Workforce Identity CloudでSMS認証を利用する設定例(2024年9月15日以降もOktaでSMS認証を利用する手順)

注意事項 (2025年02月10日 追記)

Okta側の挙動が変わり、2024年05月に公開した内容が動かなくなっていたため、ワークフローを修正し、2025年02月10日にアップデートし公開し直しました。
それに伴い、本ブログ記事も内容を一部更新しております。

IDチームの前田です。

Okta Workforce Identity Cloud(以下Okta WIC)にて、Okta社の提供するテレフォニーサービス(SMS/音声通話)が2024年9月15日以降の契約更新日より利用が出来なくなります。
この変更は、SMS/音声通話による二要素認証を狙ったフィッシング攻撃の増加を受けた対応になります。
そのためOkta WICにてSMS認証を継続して利用する場合は、新たにテレフォニープロバイダと契約し、Oktaとの連携を用意する必要があります。

今回はOkta Workflowsとテレフォニーサービスプロバイダの https://www.twilio.com/ を利用してOkta WICでSMS認証を利用する方法の紹介します。

三行まとめ

  • Okta WICでSMS認証を利用する場合は、新たにテレフォニーサービスプロバイダと契約し、Oktaとの連携を用意する必要があります。
  • 今回はOkta WorkflowsとテレフォニーサービスプロバイダのTwilioを利用してOkta WICでSMS認証を利用する方法を紹介します。
  • 今後も継続してSMS認証を利用する場合は、作業が必要になるため、時間に余裕をもって準備をしていきましょう。

用語の説明

Twilioとは

Twilioは、アプリケーションに電話、SMS、ビデオ、チャットなどのコミュニケーション機能を組み込むためのクラウドベースのAPIプラットフォームです。

Okta Workflows

Okta Workflowsは、Oktaが提供するノーコード/ローコードのワークフロー自動化ツールです。ユーザーのライフサイクル管理、アクセス管理、プロビジョニングなどのタスクを自動化出来ます。

Okta Telephony Inline Hook

  • SMS/音声通話が必要なタイミングで外部アプリケーションへWebhoookを通知する機能
  • Okta Workflowsと組み合わせて、SMS/音声通話を実現するために利用します。

今回紹介する構成

  • SMSの配信
  • Okta Workflows
  • テレフォニーサービスプロバイダ Twilio
構成図

Twilioのトライアルアカウントの作成の流れ

  1. Twilioトライアルアカウントページを開く https://jp.twilio.com/try-twilio
  2. アカウント情報を入力し、アカウントを作成
  3. メールアドレスとSMS電話番号の認証を実施
  4. 管理画面へのログイン
  5. Twilio電話番号を取得

Twilioトライアルアカウントの制限

Twilioのトライアルアカウントでは以下のような制限があります。

(※) Twilioの詳細についてはTwilioの公式ドキュメントを参照ください。

Telephony Inline Hookを用いたSMS利用の流れ

  1. Okta WorkflowsでSMS送信のワークフローを作成し、APIエンドポイントを用意
  2. OktaでTelephony Inline Hookを設定
  3. SMS送信の動作確認

Okta WorkflowsでSMS送信のワークフローを作成

Okta管理画面の左メニュー [Workflows] > [Workflows console]を選択。

上部のFlowsタブを選択し、Workflowを格納するフォルダを作成。

こちらはSMS送信のためのWorkflowをフォルダ名になるため SMS_Send など適切な名前を付けてください。フォルダ名は後から可能です。

当社側であらかじめ用意したWorkflowのテンプレートがありますので、そちらをGitHubからダウンロードし、Okta Workflowsでインポートします。

ダウンロードしたファイルをOkta Workflowsにインポートします。

インポートすると下記のようなワークフローが作成されます。

作成したワークフローには、API Endpointが設定されていますので、このInvoke URLをコピーして、後ほどTelephony Inline Hookの設定で利用します。

Okta Telephony Inline Hookの設定

Okta管理画面の左メニュー [Workflow] > [Inline Hooks] を選択、[Add Inline Hook] を選択し、Telephony を選択します。

項目設定値
Name任意の名前
URL先ほどコピーしたOkta Workflow API EndpointのInvoke URL
AuthenticationHTTP Headers
Authentication fieldnull (今回はWorkflows側で認証はしていないため、適当な文字列を設定)
Authentication secretnull (今回はWorkflows側で認証はしていないため、適当な文字列を設定)

Custom Headers に以下のヘッダを追加します。TwilioのAccount SIDとTwilioの電話番号はTwilioの管理画面から取得してください。

注意事項 (2025年02月10日追記)

Twilioのトライアルアカウントの場合、My Twilio phone number(送信元の電話番号)が無効になってしまう場合があります。
その場合はMy Twilio phone numberの再取得が必要になります。
https://help.twilio.com/articles/223183108-Restoring-a-previously-released-phone-number

Twilioのトライアルアカウントについては公式ドキュメントを参照ください。
https://www.twilio.com/docs/messaging/guides/how-to-use-your-free-trial-account

Field NameValue
TwilioAccountSIDTwilioのAccount SID
FromPhoneNumberTwilioの電話番号

SMS送信の動作確認

設定が完了したら、SMS送信の動作確認を行います。
作成したOkta Telephony Inline Hookの上部の Preview タブを選択。

data.userProfile で送信先のユーザー情報を指定します。こちらはテストで利用するユーザー指定してください。 requestType はどれを選択しても問題ありません。
その後 Generate Request をクリックし、APIに送信するリクエストを生成します。

生成されたリクエスト内の phoneNumber にテスト用の電話番号を指定します。
電話番号の形式は国番号 + 頭の0を抜いたものを指定します。
例えば日本 +81 の電話番号 090-1234-5678 の場合は、 +819012345678 と指定します。

View Response をクリック、実際にリクエストが送信され、SMSが送信されることを確認します。

スマートフォンには下記のようなSMSが届きます。

届かない場合の確認方法

  • View Responseにてエラーが発生している場合は、エラーメッセージを確認してください。
  • View Responseにてエラーが発生していない場合は、Okta Workflowsのエラーログを確認し、設定に誤りがないか確認してください。

以上がOkta Workflowsを利用したSMS送信の流れになります。
実際に本番運用する場合は、テレフォニーサービスを正式契約をし、 日本の電話番号取得などが必要になりますので、時間に余裕をもって作業をお願いいたします。

参考ドキュメント

glidenote

memolist.vim作者. GMOペパボ、Kaizen PlatformといったWEB系スタートアップでシニアエンジニア、SRE Group Manager、Engineering Group Managerを歴任。AWS Certified Security – Specialty.
Speed Cube初心者 1/5/12=19.21/29.70/30.27。ばね指治療中