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

連絡先の Source ID を使ったログイン不要のチャット

自社サイトにログイン済みのユーザーが、自分のユーザー識別子(Source ID)を使って再ログインせずに会話を開始できます。プラットフォームはこの識別子を連絡先に対応付け、バックエンドで署名されていないリクエストによるなりすましを防ぎます。

Web Chat を自社サイトに埋め込む場合、ユーザーはすでにサイトにログインしていることがよくあります。この設定により、自社システムのユーザー識別子を使って、再度ログイン画面を経由せずに会話を開始できます。同時に、公開の会話 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 分後にログアウトされることはありません。

三、エンジニアによる連携方法

管理画面の「 連携サンプル 」セクションには、この会話プラットフォームの識別子が反映されるため、そのままコピーして使用できます。パラメーターの詳細、検証ルール、トラブルシューティングについては、エンジニアに Web Chat 埋め込みと SDK · 署名検証 を参照してもらってください。

1. バックエンドで署名を計算する

署名は HMAC-SHA256(シークレット, "{会話プラットフォーム識別子}.{Source ID}.{タイムスタンプ}") を計算し、hex 文字列で渡します。タイムスタンプは Unix 秒(UTC)で、バックエンドで生成します。

2. フロントエンドで埋め込みスクリプトに値を渡す

3. 連携時の注意事項

  • アクセスのたびに新しい署名を生成してください:同じ署名を正常に使用できるのは一度だけです。埋め込み側で署名をキャッシュしないでください。

  • 署名はバックエンドで計算してください:シークレットがフロントエンドのコードに含まれると、公開されたのと同じ状態になります。

  • 時計を正確に合わせてください:システムが許容する時計のずれは 60 秒です。この範囲を超えるタイムスタンプは拒否されます。

  • 正しい会話プラットフォーム識別子を使用してください:署名には会話プラットフォーム識別子が含まれます。別の会話プラットフォームの識別子で計算した署名は検証に失敗します。

四、動作の比較

受信したリクエスト
結果

Source ID + 有効な署名あり

ログイン画面を表示せず、直接会話を開始します

Source ID あり、署名が不正または期限切れ

拒否します

同じ署名を再利用

初回は成功し、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 を複数の会話プラットフォームで使用すると、各プラットフォームにそれぞれ連絡先が存在し、会話履歴は独立して管理されます。

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

この設定はデフォルトで無効であり、既存の会話プラットフォームの動作は変わりません。有効にして署名モードを選択すると、ts と sig を持たないリクエストはログインページにリダイレクトされます。そのため、埋め込み側も更新済みであることをエンジニアに確認してから有効にしてください。

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

すでに認証済みのユーザーは、その会話を続けられます。制御できるのは署名の発行側です。ログアウト後に新しい署名を発行しなければ、ユーザーは再度認証できません。「ログアウト時に即座に無効化する」必要がある場合は、お問い合わせください。対応方法を別途検討します。

Source ID でアクセスしたユーザーのログイン認証情報は、AI がツールを呼び出す際に渡されますか?

いいえ。「Keycloak のログイン ID を使用してツールを呼び出す」は、実際に Keycloak でログインした訪問者にのみ適用されます。ID は会話の作成時に紐付けられた組織メンバーに基づき、埋め込み側から渡された Source ID は使用しません。そのため、Source ID を使って他人の認証情報を偽装することはできません。ツールでユーザーを識別する必要がある場合は、Keycloak ログインとこの機能を組み合わせるか、連絡先に MCP 認証情報 を設定してください。

最終更新

役に立ちましたか?