SaaS

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

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からSMS送信するにはTwilio側に認証/登録が必要
  • そのほかの制限については詳細は https://www.twilio.com/docs/messaging/guides/how-to-use-your-free-trial-account を参照ください

(※) 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が設定されていますので、このURLをコピーして、後ほどTelephony Inline Hookの設定で利用します。

Okta Telephony Inline Hookの設定

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

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

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

Field Name Value
TwilioAccountSID TwilioのAccount SID
FromPhoneNumber Twilioの電話番号

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。ばね指治療中