Skip to main content

概要

JWT(JSON Web Token)認証は、ユーザーの身元を安全に検証するための標準的な方法です。JWT認証を実装することで、MoEngageでのデータ収集プロセスに重要なセキュリティレイヤーを追加できます。 この機能により、識別済みユーザーに代わって送信されるデータが本物であり、改ざんされていないことが保証されます。このセキュリティは、お客様自身のサーバーで暗号署名されたトークンを必須とすることで実現され、不正なユーザーが正規のユーザーになりすますことを防ぎます。
前提条件実装を開始する前に、以下の要件を満たしていることを確認してください。
  • JWT認証機能を利用するには、アプリケーションでMoEngage Flutter Coreプラグインのバージョン 11.0.0 以上を使用している必要があります。
  • 公開鍵の管理や機能の適用設定を構成するために、MoEngageダッシュボードへのアクセス権が必要です。適用設定の詳細については、こちらを参照してください。
次の図は、アプリケーション、お客様のサーバー、MoEngage SDK、およびMoEngageサーバー間のやり取りを示しています。 アプリケーションがお客様のサーバーにJWTをリクエストし、それをMoEngage SDKに渡し、SDKが認証済みリクエストをMoEngageサーバーに送信する流れを示すフロー図

統合

FlutterアプリケーションにJWT認証を統合するには、以下の手順を実行します。

ステップ1:JWT認証を有効にする

各プラットフォームのネイティブSDK初期化時にJWT認証を有効にします。アプリケーションで使用している初期化方法に合った手順に従ってください。ステップ2と3はどちらの方法でも同じです。
config generator を使用して設定ファイルを生成する場合は、Enable JWT Authorisation を Yes に設定してください。生成されたファイルには、以下で説明するキーが含まれます。

Android

手動初期化 MoEngage.Builder オブジェクトで NetworkAuthorizationConfig プロパティを設定します。詳細については、Android SDKの初期化を参照してください。
ファイルベースの初期化 moengage.xml 設定ファイルに次のキーを追加します。詳細については、ファイルベースの初期化を参照してください。
moengage.xml

iOS

手動初期化 MoEngageSDKConfig オブジェクトで networkConfig プロパティを設定します。詳細については、iOS SDKの初期化を参照してください。
ファイルベースの初期化 Info.plist の MoEngage ディクショナリに次のキーを追加します。詳細については、ファイルベースの初期化を参照してください。
Info.plist

ステップ2:JWTをSDKに渡す

JWTのライフサイクル管理はアプリケーション側の責任です。推奨されるフローは、ユーザーのログイン時にトークンを取得し、そのトークンをSDKに渡すことです。また、以降のアプリ起動時にトークンの有効期限が切れていないかを確認し、必要に応じて新しいトークンを取得してください。 MoEngageFlutter オブジェクトの passAuthenticationDetails() メソッドを使用して、SDKにトークンを提供します。
Dart
詳細については、クラスと列挙型を参照してください。

ステップ3:コールバックハンドラーを登録して認証エラーを処理する

SDKは、MoEngageサーバーから返されたトークン検証エラーをコールバックを通じて通知します。認証が失敗したときにアプリケーションが新しいトークンを取得して提供できるよう、setAuthenticationErrorCallbackHandler() を使用してハンドラーを登録してください。このメソッドは、typedef が AuthenticationErrorCallbackHandler(AuthenticationErrorData data) である関数を受け取ります。 アプリケーションが常にコールバックを受信できるように、ルートウィジェットの initState() などのグローバルスコープでハンドラーを登録してください。
Dart
コールバックの受信を停止するには、同じメソッドに null を渡します。
Dart
詳細については、クラスと列挙型を参照してください。

クラスと列挙型

以下のクラスと列挙型は、このガイドで説明しているJWT認証メソッドで使用されるデータ構造を定義しています。トークンペイロードの作成やエラー処理の際に使用してください。
Dart
情報
  • 認証エラーによりAPIリクエストが失敗した場合、アプリケーションが新しいトークンを提供するまで、SDKはリクエストを再試行しません。
  • 1つのセッション内で認証が10回連続して失敗すると、SDKは次のセッションが始まるまでデータ同期の試行を停止します。このカウンターは、同期が成功するとリセットされます。
  • ユーザーのログアウト時にJWTエラーによりデータ同期が失敗した場合、保留中のデータは削除され、再試行は行われません。