サイトにMessengerをログインしたusers向けに設置している場合、悪意のある第三者がusersになりすましたり、不正なデータ送信を防ぐためにセキュリティを強化することが重要です。
お客様のセキュリティと柔軟性を向上させるために、Messengerでusersを認証するより安全でスケーラブルな方法としてJSON Web Tokens(JWTs)を導入しました。
現在Identity Verification(IDV)を使ってusersを認証している場合、JWTsに切り替えることで以下のメリットがあります。
認証のより高度な制御 – 固定設定に頼らず、自分でセッションの有効期限や取り消しを管理できます。
強化されたセキュリティ – JWTsは時間制限付きの署名付きトークンを可能にし、リプレイ攻撃のリスクを減らします。
データセキュリティの向上 – 更新可能なusers属性を正確に定義し、機密データの露出を減らします。
将来への備え – JWTsはIDVの推奨代替手段であり、認証システムを最新のベストプラクティスに合わせて維持します。
誰が移行すべきか?
この移行は現在IDVを使用しているすべてのお客様に関連し、特に以下の場合に推奨されます。
✅ セッションの有効期限とトークン取り消しをより良く制御したい
✅ 安全でユーザー固有の属性更新を強制したい
✅ 機密性の高い顧客データを扱い、より強力な認証が必要な場合
✅ ワークスペースの長期的なセキュリティ改善を計画している場合
IDVは当面利用可能ですが、JWTsはよりモダンで安全な認証手法であり、ベストプラクティスに沿っています。このガイドでは移行手順を段階的に説明します。
Identity VerificationとJWTsを使ったMessenger Securityの主な違い
| Identity Verification | JWTsを使ったMessenger Security |
認証方法 | HMAC-SHA256署名ハッシュ | HMAC-SHA256署名JWTトークン |
有効期限対応? | いいえ | はい |
安全なデータ更新対応? | いいえ | はい |
推奨用途 | Messengerでの基本的なIdentity Verification | より良いセッション制御と安全なデータ処理を備えた安全な認証 |
移行手順
ステップ1:ハッシュの代わりにJWTを生成するよう統合を更新する
Identity Verification用のHMAC-SHA256署名(ユーザーハッシュとも呼ばれる)の生成を停止してください。
[任意] Messenger用に新しい秘密鍵を生成し、適用するプラットフォームを選択してください。
秘密鍵を使ってJWTを生成してください。
ワークスペースでIdentity Verificationがすでに有効になっている場合(Messenger設定で「securely installed」と表示されている場合)、Intercomは有効なユーザーハッシュまたは有効なJWTを含むリクエストのみを受け入れます。
切り替え前にJWTの実装が期待通りに動作するか確認したい場合は、テストワークスペースで最初に統合を行うことをお勧めします。
注意:テストワークスペースと本番ワークスペースはMessengerの秘密鍵が異なるため、生成されるユーザーハッシュとJSON Webトークンも異なります。
Node.js用のサンプルサーバーサイドコード設定例はこちらです。
const jwt = require("jsonwebtoken");
const payload = {
user_id: "USER_ID_HERE", // Required
email: "EMAIL_ADDRESS_HERE", // Optional
data_attribute: "YOUR_DATA", // Optional
exp: Math.floor(Date.now() / 1000) + 3600 // Expires in 1hr
};
const secret = process.env.MESSENGER_SECRET_KEY || "YOUR_MESSENGER_SECRET_KEY"; // Secure key storage
const intercomUserJwt = jwt.sign(payload, secret, { algorithm: "HS256" });JWTペイロードに含める内容:
ユーザーを識別するための
user_id。必須フィールドです。有効期限のためのオプションのタイムスタンプ(
exp)users向けに安全に送信したいその他のデータ属性
JWTの生成方法について詳しくは当社のメインhelp center記事またはセキュリティ設定をご覧ください。
ステップ1a:データ属性についての注意点
現在Messengerを通じてusersのデータ属性を送信している場合は、統合を更新してそれらの属性をuser JWT内で安全に送信するようにしてください。そのためには、ペイロードに属性を追加し、不正なMessengerリクエストをブロックする必要があります。
上記のコード例では、ペイロードにuser_idとemailを署名しています。有効期限もペイロードに含める必要があります。
これらの属性については、不正なMessenger更新を無効化すべきです。つまり、有効なJWTを介してのみ更新可能で、それ以外では更新できません。
JWTで送信している属性については、このトグルを有効にすることをお勧めします。ワークスペースの属性は設定 > データ > Peopleで確認できます。
注意:この属性更新トグルは、botを使ってleadsから直接データを収集することは妨げません。このデータはusersから直接取得されます。
ステップ2:frontendスニペットを更新してusersのJWTを送信する
IDV用のHMAC署名の代わりに、Messenger設定でJWTをintercom_user_jwtとして渡してください。
Web(JavaScript SDK)用:
window.Intercom("boot", {
api_base: "https://api-iam.intercom.io",
app_id: "<YOUR_APP_ID_HERE",
intercom_user_jwt: "<YOUR_USER_JWT_HERE>"
};
前節で述べたように、データ属性はJWT内で送信され、スニペットからは削除されています。
JWTの生成方法について詳しくは当社のメインhelp center記事またはセキュリティ設定をご覧ください。モバイル向けの手順は、iOSおよびAndroidの開発者ドキュメントをご参照ください。
トラブルシューティング
JWTへの移行を支援するために、セキュリティ設定には詳細な失敗ログとトークンデバッガーツールがあります。
よくある質問
移行しなかったらどうなりますか?
Identity Verificationは当面利用可能ですが、JWTsはより強力なセキュリティと優れた制御を提供します。
JWTセッションを取り消すには?
短い有効期限(exp)を設定するか、署名鍵をローテーションして古いトークンを無効にできます。
Identity VerificationとJWTsを両方使えますか?
プラットフォームでJWT認証が有効になると、Identity Verificationは不要になります。ただし、web、iOS、Androidは個別に設定されているため、JWTとIdentity Verificationを独立して使用できます。

