For the complete documentation index, see llms.txt. This page is also available as Markdown.

連絡先の 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 のみ」を選択すると、赤色のリスク警告が表示されます

4. 署名シークレットを取得する

署名モードを選択して設定を保存すると、プラットフォームが署名シークレットを生成します。シークレット欄では次の操作ができます。

  • 表示」をクリックして完全なシークレットを確認します(デフォルトではマスクされています)

  • コピー」をクリックしてエンジニアに渡します

  • 再生成」をクリックして新しいシークレットを発行します

5. 署名の有効期限を設定する

1 分、5 分、15 分から選択でき、デフォルトは 5 分です。期限切れまたは使用済みの署名は拒否されます。

署名シークレット、有効期限、連携例、動作プレビュー

有効期限は「この署名を使用して対話を開始できる期間」を制限するもので、対話の継続時間ではありません。本人確認後の対話は通常どおり継続し、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 がある

署名を検証せず、直接対話します

このスイッチが無効

従来のログイン設定の動作を維持します

すべての拒否ケースで外部へのレスポンスは同じです。失敗理由や Source ID の存在は開示されません。理由は管理画面の署名検証失敗ログにのみ表示されます。

五、署名検証失敗ログ

連携がうまくいかない場合は、設定欄の「署名検証失敗ログを表示」をクリックすると、最近の失敗イベントを確認できます。ログにシークレットや完全な署名は含まれません。

展開された署名検証失敗ログ
理由
主な原因

署名の期限切れ

サーバー時刻のずれ、または埋め込み側による署名のキャッシュ

タイムスタンプが未来の許容範囲を超過

サーバー時刻が 60 秒を超えて進んでいます

署名が一致しない(シークレットが異なる可能性)

バックエンドのシークレットが管理画面と異なるか、署名文字列の組み立てが不正です

タイムスタンプまたは署名がない

埋め込み側が ts または sig を渡していません

署名が使用済み

同じ署名が 2 回送信されました

リプレイ防止キャッシュを利用できない

プラットフォームの一時的な問題により、安全のため許可せず拒否します

Source ID が複数の連絡先に対応

この対話プラットフォームに同じ Source ID の連絡先が重複しています

六、よくある質問

署名の有効期限が切れると、ユーザーの対話は中断されますか?

いいえ。有効期限は、署名で本人確認できる期間のみを制限します。本人確認後の対話の継続時間は既存の Web Chat の仕組みに従い、署名の期限には影響されません。

同じ Source ID が複数の連絡先に対応することはありますか?

同じ対話プラットフォーム内では、一つの Source ID は一人の連絡先にのみ対応します。複数の対話プラットフォームで同じ Source ID を使用した場合は、各プラットフォームに個別の連絡先が作成され、対話履歴も分離されます。

この設定を有効にすると、既存の埋め込みに影響しますか?

この設定はデフォルトで無効のため、既存の動作は変わりません。署名モードを有効にすると、tssig のないリクエストはログインページへ転送されます。埋め込み側が更新済みであることをエンジニアに確認してから有効にしてください。

ユーザーが自社の Web サイトからログアウトした後も、対話を続けられますか?

すでに本人確認済みのユーザーは、その対話を継続できます。発行側では、ログアウト後に新しい署名を発行しないことで、再度本人確認できないように制御できます。「ログアウト時に即時無効化」が必要な場合は、対応方法を検討しますのでお問い合わせください。

最終更新

役に立ちましたか?