連絡先の Source ID によるログイン不要の対話
Web サイトにログイン済みのユーザーが、自分のユーザー番号(Source ID)を使用して再ログインせずに直接対話できます。プラットフォームはこの番号を連絡先に対応付け、バックエンドの署名がないリクエストによるなりすましを防ぎます。
Web Chat を自社の Web サイトに埋め込む場合、ユーザーはすでにそのサイトにログインしていることが一般的です。この設定を使用すると、自社システムのユーザー番号を渡してすぐに対話を開始でき、再度ログイン画面を通る必要がありません。同時に、公開対話 URL からの匿名アクセスは引き続きブロックされます。
MaiAgent ではこの番号を Source ID と呼び、管理画面と埋め込みスクリプトでも同じ名称を使用します。Source ID を受信すると、プラットフォームはそれを一人の連絡先に対応付けるか、新しい連絡先を作成し、そのユーザーの対話履歴を連絡先に紐付けます。
一、この設定で解決できる課題
これまでは、ログイン設定で次のいずれかを選ぶ必要がありました。
ログイン設定を有効にする:埋め込み元ですでに本人確認済みでも、ユーザーは再度ログインを求められます。
ログイン設定を無効にする:公開対話 URL を誰でも匿名で利用できます。
この設定を有効にすると、Source ID と有効な署名を持つユーザーは直接対話でき、それらを持たないアクセスはすべてログインページへ転送されます。
二、設定を有効にする
左側のメニューで「カスタマーサポート対話 > 対話プラットフォーム」を開き、Web サイトタイプの対話プラットフォームを選択して、「ログイン設定」タブを開きます。
1. 最初にログインソースを選択する
このスイッチはログイン設定に付随するため、まず「ログインソース」でいずれかのソース(MaiAgent/AD/Keycloak/LINE)を選択する必要があります。未選択の場合はスイッチを操作できず、「先にログインソースを選択してください」と表示されます。

2. スイッチを有効にする
「埋め込み側で Source ID を使用したログイン不要の対話を許可」を有効にします。有効にすると、検証方式、署名シークレット、連携例が表示されます。

3. 検証方式を選択する
署名検証を必須にする(推奨)
埋め込み側は、バックエンドで計算した署名を添付する必要があります。検証に成功した場合のみ許可され、シークレットを持つサーバーだけがユーザーに代わって対話を開始できます。
本番環境
Source ID のみ
署名を検証せず、Source ID があれば許可します。
テスト環境または閉域イントラネット
「Source ID のみ」を選択すると、Source ID 自体がアクセス証明になります。メールアドレス、学籍番号、社員番号など推測可能な値の場合、第三者がそのユーザーになりすまして対話し、履歴を閲覧できる可能性があります。本人確認が必要な場合は署名モードを使用するか、AD/Keycloak/MaiAgent ログインを使用してください。

4. 署名シークレットを取得する
署名モードを選択して設定を保存すると、プラットフォームが署名シークレットを生成します。シークレット欄では次の操作ができます。
「表示」をクリックして完全なシークレットを確認します(デフォルトではマスクされています)
「コピー」をクリックしてエンジニアに渡します
「再生成」をクリックして新しいシークレットを発行します
シークレットはサーバーの環境変数に保存し、フロントエンドのコードには絶対に記述しないでください。再生成すると古いシークレットは直ちに無効になります。バックエンドも同時に更新しないと、すべての署名検証に失敗します。
5. 署名の有効期限を設定する
1 分、5 分、15 分から選択でき、デフォルトは 5 分です。期限切れまたは使用済みの署名は拒否されます。

三、エンジニア向け連携方法
管理画面の「連携例」には、この対話プラットフォームの ID が反映されており、そのままコピーできます。パラメータ、検証ルール、トラブルシューティングの詳細は、Web Chat 埋め込みと SDK · 署名検証を参照してください。
1. バックエンドで署名を計算する
署名は HMAC-SHA256(シークレット, "{対話プラットフォーム ID}.{Source ID}.{タイムスタンプ}") で、16 進文字列として渡します。タイムスタンプはバックエンドが生成する Unix 秒(UTC)です。
2. フロントエンドの埋め込みスクリプトに渡す
3. 連携時の注意事項
アクセスのたびに再署名します:同じ署名を正常に使用できるのは一度だけです。埋め込み側で署名をキャッシュしないでください。
署名はバックエンドで計算します:シークレットがフロントエンドのコードに含まれると公開情報になります。
時刻を正確に保ちます:システムは 60 秒の時刻ずれを許容します。範囲外のタイムスタンプは拒否されます。
正しい対話プラットフォーム ID を使用します:別のプラットフォーム ID で計算した署名は検証に失敗します。
四、動作一覧
Source ID + 有効な署名
ログイン画面を表示せず、直接対話します
Source ID があり、署名が不正または期限切れ
拒否されます
同じ署名を再利用
1 回目は成功し、2 回目は拒否されます
Source ID がない(公開 URL を直接開いた場合を含む)
ログインページへ転送されます
検証方式が「Source ID のみ」で Source ID がある
署名を検証せず、直接対話します
このスイッチが無効
従来のログイン設定の動作を維持します
五、署名検証失敗ログ
連携がうまくいかない場合は、設定欄の「署名検証失敗ログを表示」をクリックすると、最近の失敗イベントを確認できます。ログにシークレットや完全な署名は含まれません。

署名の期限切れ
サーバー時刻のずれ、または埋め込み側による署名のキャッシュ
タイムスタンプが未来の許容範囲を超過
サーバー時刻が 60 秒を超えて進んでいます
署名が一致しない(シークレットが異なる可能性)
バックエンドのシークレットが管理画面と異なるか、署名文字列の組み立てが不正です
タイムスタンプまたは署名がない
埋め込み側が ts または sig を渡していません
署名が使用済み
同じ署名が 2 回送信されました
リプレイ防止キャッシュを利用できない
プラットフォームの一時的な問題により、安全のため許可せず拒否します
Source ID が複数の連絡先に対応
この対話プラットフォームに同じ Source ID の連絡先が重複しています
六、よくある質問
最終更新
役に立ちましたか?
