認証設定を構成する
Customer Service 用オムニチャネルには、Dynamics 365 Customer Service Enterprise の機能を拡張する一連の機能が用意されていて、組織はデジタル メッセージング チャネルを通して顧客と即座につながり、やり取りできるようになります。 Customer Service 用オムニチャネルにアクセスする際は、追加のライセンスが必要です。 詳細については、Dynamics 365 Customer Service 価格の概要 と Dynamics 365 Customer Service 価格プラン ページを参照してください。
注意
機能の可用性情報は次のとおりです。
Dynamics 365 Contact Center - 埋め込み | Dynamics 365 Contact Center - スタンドアロン | Dynamics 365 Customer Service |
---|---|---|
可 | 可 | 可 |
認証設定を作成して、ドメインからサインインした顧客を検証し、定義されたコンテキスト変数に基づいて情報を抽出できます。 匿名の顧客と認証済みの顧客を区別したり、コンテキスト変数に基づいたルールを作成できます。
たとえば、匿名の顧客と認証済みの顧客に対して別々のキューを設定できます。 認証された顧客に関する情報が多いので、ショッピング カートの値や特権ステータスなどの特定の変数に基づいて優先順位を付けることもできます。
認証設定レコードを作成したら、ワークストリームのチャネル設定内のチャネル インスタンスに追加して機能させる必要があります。 これらのチャネルでは、認証がサポートされています。
- チャット
- Apple Messages for Business
顧客が認証されているかどうかを示すために、エージェントは 会話の概要 セクションで通知を受け取ります。 認証済み フィールドは、顧客の認証ステータスに基づいて はい または いいえ に設定されます。 詳細については 会話の概要をご覧ください
前提条件
- OAuth 2.0 と JSON Web Tokens (JWT) についての十分な知識があること。
- セキュリティで保護された列に対するアクセス許可があることを確認します。 詳細については、 セキュリティで保護された列にアクセスするための権限を構成する
チャットの認証設定レコードを作成する
管理アプリで認証設定レコードを作成できます。
Customer Service 管理センターのサイトマップで、顧客サポート で 顧客設定 を選択します。 顧客設定ページが表示されます。
認証設定セクションで、管理を選択します。 認証設定 ページが表示されます。
選択 新しい認証設定を選択し、 認証設定の追加 ページで次の情報を入力します。
名前: 認証設定の名前を入力します。
所有者: デフォルト値を受け入れるか、必要な値に変更します。
認証タイプ: デフォルトでは、OAuth 2.0暗黙的フローは編集できません。
公開キーの URL: ドメインの公開キーの URL を指定します。 このURLは、顧客がログインしたドメインのJavaScript Object Notation (JSON) Web Token (JWT) から送信される情報を検証するために使用されます。
JavaScript クライアント関数: 認証に使用する JavaScript クライアント関数を指定します。 この関数はトークン エンド ポイントからトークンを抽出します。
公開キーURLとJavaScriptクライアント関数を見つける方法の詳細については、この記事の後半の「 ポータルのセットアップ Power Apps 」または「 カスタム ポータルのセットアップ 」のセクションを参照してください。
保存 を選びます。
OAuth 2.0 を使ったチャットに対して、認証を作成する
チャットの認証設定レコードを作成するの手順1 ~ 3を実行し、 認証設定を追加する ページで次の詳細を入力します。
- 名前: 認証設定の名前を入力します。
- チャネル タイプ: ライブ チャット。
- 認証タイプ: OAuth 2.0 暗黙的フロー
次へ を選び、詳細 ページで以下の情報を入力します。
- トークン カスタム アクション: ID プロバイダーによって提供されるトークンを検証し、認証されたユーザーのユーザー ID を返すカスタム コード参照。
- トークンURL: ユーザーIDを取得するためにカスタム アクションに渡されるトークンと認証コードを交換するために使用されるURL。
- リダイレクトURL: 元の認証コード要求に渡されるURL。これは、トークン交換 エンドポイント の呼び出しで必須のパラメーターです。
- クライアントID: トークン交換 エンドポイント に渡されるクライアントのID。
- クライアント シークレット : トークン交換 エンドポイント に渡されるクライアントを認証するシークレット。
- スコープ: フローで取得したトークンによってユーザーが認可されるスコープ。
変更を保存します。
チャット ウィジェットに認証を追加する
チャット ウィジェット で、ワークストリーム設定の チャット ウィジェット を編集し、 [動作] タブに移動します。
認証設定ボックスで、チャット認証レコードを参照して選択します。
ポータルにサインインしている顧客がチャット ウィジェットを開くと、JavaScript クライアント機能が JWT をクライアントからサーバーに渡します。 JWTは公開キーを使用して復号化および検証され、その情報はCustomer Service用オムニチャネル のチャット エージェントに渡されます。 管理者として、カスタム コンテキスト変数を定義することで、サインインした顧客に関する追加情報を JWT に渡すこともできます。 コンテキスト変数は、オムニチャネル に関連付けられたワークストリームとまったく同じように定義する必要があります。 詳細については、 コンテキスト変数の管理を参照してください。
Power Apps ポータルの設定
Power Apps ポータルを使用して開発されたWebサイトで チャット ウィジェット の認証を追加すると、公開キーURLとJavaScriptクライアント機能がすぐに使用できるようになります。 ポータルに有効な公開キーURLを設定するには、 カスタム証明書をアップロード する必要があります Power Apps 。
-
公開キーの URL:
<portal_base_URL>/_services/auth/publickey
-
JavaScript クライアント関数:
auth.getAuthenticationToken
ポータルは、JavaScriptクライアント関数で渡されたコンテキストを通じて、会話に連絡先レコードを自動的に追加しようとします。 Power Apps
カスタム ポータルの設定
ポータルを使用して開発されていないカスタムWebサイトに認証済みチャット エクスペリエンスを追加する場合、Web開発チームは、認証済みチャットを構成する前に次の手順を実行する必要があります。 Power Apps
認証サーバ-に公開キー/秘密キーのペアを生成します。 キーは RSA256 アルゴリズムを使用して生成する必要があります。
次のサンプル コードは、秘密鍵または公開鍵のペアを生成するものです。
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 openssl rsa -pubout -in private_key.pem -out public_key.pem
公開鍵を返す エンドポイント を作成します。 オムニチャネル サーバーは、公開キーを使用して、チャット要求の承認の一部として渡されたJWTトークンを検証します。 認証設定レコードを作成するときに、この エンドポイント のURLを管理アプリに入力します。
公開鍵 エンドポイント は次の例のようになります。
-----BEGIN PUBLIC KEY----- NIIBIjANBgkqhkiG9w0BAQEFABCOPQ8AMIIBCgKCAQEAn+BjbrY5yhSpLjcV3seP mNvAvtQ/zLwkjCbpc8c0xVUOzEdH8tq4fPi/X5P/Uf2CJomWjdOf1wffmOZjFasx ELG+poTqy5uX2dNhH6lOMUsV31QGG36skLivpLBCSK6lWlzsV6WGkb/m8r86aGzp jtNhw8yvoTYB4updDrJ8pC+tx4EWK0WEmKn1GsW6TjUtxJjcTLI1puSbmcGHbkSi RSbWkKPqaEVFALprw+W5ZCung5QX3KOkY/rJd+2JwULm7okyQCQaF7qwa5i9Uf65 7M6ZL4vsDevq7E/v3tf6qxpSSHzt4XspXVQty9QHhqDqBEY3PfI4L2JjgIGuPhfS YQIDAQAB -----END PUBLIC KEY-----
複数の公開鍵を使用する必要がある場合、公開キーのエンドポイントは <kid, publickey>
組のセットを返すことができ、ここで kid
はキー ID を指します。 キー ID のペアは必ず一意にします。 子供には、手順4のJWTトークンを渡す必要があります。 複数のキーを使用する場合、公開キー エンドポイント は次の例のようなものを返します。 公開鍵はbase64でエンコードされています。
[
{
"kid": "qWO4EaKT1xRO7JC/oqALz6DCVr41B/qL0Hqp4in7hu4=",
"publicKey": LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0NCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBbjFLdXhtSEh3V3hjelZSWGRBVmMNCnBEaFZwa0FnYklhTGZBUWc1bFpvemZqc29vcWRGWkl0VlFMdmRERWFVeDNqTytrTkxZM0JFRnBYVDZTN3ZNZCsNCnZoM2hpMDNsQ1dINnNCTWtaSWtuUUliMnFpekFsT0diU2EvK3JrUElnYnpXQjRpT1QyWVhyOVB4bXR5d2o4WUINCnYram55VU5DSzMyZy9FYWsvM0k3YW1vZ2pJY0JISjNFTjVuQWJBMExVVnJwMW5DODJmeEVPOHNJTzNYdjlWNVUNCnc5QnVTVVFRSmtMejNQYVI5WTdRZUEyNW5LUGtqTXZ2Y0UxVU5oeVpIYlNLbmorSitkZmFjb1hsSGtyMEdGTXYNCldkSDZqR0pWcGNQMHBkNjFOa3JKa2c0aStheThwS2ZqdjNUOHN3NWdaVHFweFFaaitVRWxqaVM0SHRPTlhkNlENCnZRSURBUUFCDQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0NCg==",
"expiry": 1608495423
},
{
"kid": "qWO4EaKT1xRO7JC/oqALz6DCVr41B/qL0Hqp__valid=",
"publicKey": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0NCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBbjFLdXhtSEh3V3hjelZSWGRBVmMNCnBEaFZwa0FnYklhTGZBUWc1bFpvemZqc29vcWRGWkl0VlFMdmRERWFVeDNqTytrTkxZM0JFRnBYVDZTN3ZNZCsNCnZoM2hpMDNsQ1dINnNCTWtaSWtuUUliMnFpekFsT0diU2EvK3JrUElnYnpXQjRpT1QyWVhyOVB4bXR5d2o4WUINCnYram55VU5DSzMyZy9FYWsvM0k3YW1vZ2pJY0JISjNFTjVuQWJBMExVVnJwMW5DODJmeEVPOHNJTzNYdjlWNVUNCnc5QnVTVVFRSmtMejNQYVI5WTdRZUEyNW5LUGtqTXZ2Y0UxVU5oeVpIYlNLbmorSitkZmFjb1hsSGtyMEdGTXYNCldkSDZqR0pWcGNQMHBkNjFOa3JKa2c0aStheThwS2ZqdjNUOHN3NWdaVHFweFFaaitVRWxqaVM0SHRPTlhkNlENCnZRSURBUUFCDQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0NCg==",
"expiry": 1608495423
}
]
認証されたユーザーのチャットを開始する一環として、リンク のサーバーに送信するJWTを生成するサービスが必要です。
a. JWTヘッダーは次の例のようになります。
{ "alg": "RS256", "typ": "JWT", }
複数の公開鍵を使用する場合は、鍵ID (kid) を渡す必要があります。 ヘッダーは次の例のようになります。
{ "alg": "RS256", "typ": "JWT", "kid": "qWO4EaKT1xRO7JC/oqALz6DCVr41B/qL0Hqp4in7hu4=" }
b. JWT のペイロードには、以下を含める必要があります。
少なくとも、次の主張があります。
請求 Definition iss トークンの発行者。 iat トークンが発行された日付 (数値の日付形式)。 exp このトークンの有効期限 (数値の日付形式)。 sub 要求の件名です。
注意: サインインしたユーザーの 管理者 で連絡先またはアカウント レコードのGUIDを渡すことをお勧めします。 このGUIDは、連絡先レコードを識別して会話に リンク するために使用されます。 レコード検索では、連絡先またはアカウントのアクティブなステータス コードを持つレコードが識別されます。 カスタム ステータス コードを使用する場合、レコード識別は機能しません。lwicontexts ルーティングの目的で、またはエージェントに表示するために、会話の一部として渡すコンテキスト変数。
詳細情報
カスタムコンテキストの管理
setAuthTokenProvider メソッド
コンテキスト変数を使用してレコードを自動的に識別するその他の渡すデータ。
ペイロードは次の例のようになります。
{ "sub" : "87b4d06c-abc2-e811-a9b0-000d3a10e09e", "lwicontexts" :"{\"msdyn_cartvalue\":\"10000\", \"msdyn_isvip\":\"false\", \"portalcontactid\":\"87b4d06c-abc2-e811-a9b0-000d3a10e09e\"}", "iat" : 1542622071, "iss" : "contosohelp.com", "exp" : 1542625672, "nbf" : 1542622072 }
c. JWT の署名は秘密キーで署名されている必要があります。
注意
- トークンの有効期限が切れているか無効な場合、チャット ウィジェット はエラー イベントをスローします。
- setContextProviderメソッド は認証されたチャットではサポートされていません。 lwicontexts を JWT ペイロードの一部として渡す必要があります。
コールバック関数を受け入れ、コールバック関数にJWTを返すJavaScript関数をWebサイトに作成します。 タイムアウトを回避するために、この javascript 関数は 10 秒以内に JWT を返す必要があります。 このJWTは次の基準を満たす必要があります。
手順3のヘッダー、ペイロード、署名が含まれている必要があります。
手順1のキー ペアの秘密キーで署名する必要があります。
JWT は Web サーバー上で生成することをお勧めします。
このJavaScriptメソッドの名前は、顧客サービス 管理アプリで認証設定レコードを作成するために使用されます。
// This is a sample JavaScript client function auth.getAuthenticationToken = function(callback){ var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { callback(xhttp.responseText); } }; xhttp.onerror = function(error) { callback(null); }; //Replace this with a call to your token generating service xhttp.open("GET", "https://contosohelp.com/token", true); xhttp.send(); }
開発者は、次の情報を オムニチャネル 管理者: で 共有 する必要があります
a. 手順2の公開キー サービスの URL。
例: https://www.contoso.com/auth/publickey
b. 手順 4 の javascript クライアント関数の名前。 ライブ チャット ウィジェット は、チャットの開始時に内部的にこの名前を呼び出します。
例 : auth.getAuthenticationToken
Note
ユーザーが認証される前にチャット ボタンが表示される場合、必要に応じて認証ページにリダイレクトするようにしてください。 リダイレクトは、手順4のメソッドで設定することも、ユーザー フロー内の以前の 手順 として設定することもできます。
次の図は、セットアップを示しています。
続いて、以下の手順で認証済みチャットを設定します :
認証付きチャットの設定
管理アプリに移動し、前のセクションの 手順5の情報を使用して認証設定レコードを作成します。 詳細については、 チャットの認証設定レコードを作成する
認証されたエクスペリエンスを持つ チャット ウィジェット に認証設定を関連付けます。 詳細については、 チャット ウィジェット に認証を追加するをご覧ください。
次の図は、ユーザーが認証された設定でチャットにアクセスした場合のコールシーケンスを示しています。
Apple Messages for Business の認証設定を作成する
前提条件
認証設定を構成する管理者には、より多くのセキュリティ権限が必要です。 詳細については、 フィールドのセキュリティ権限の設定を参照してください。
組織がOAuth 2.0 OpenID接続 フローに関する実用的な知識を持っていることを確認してください。 手順については次のセクションで説明します。
組織に Apple Messages for Business認証の種類のリッチ メッセージ が少なくとも 1 つあることを確認します。 このリッチ メッセージ構成はセットアップに必要です。
OAuth 2.0 OpenID 接続フローを使用して Apple Messages for Business の認証設定レコードを作成する
Customer Service 管理センター アプリのサイト マップで、顧客の設定 を選択し、認証設定の管理 を設定します。 既存の認証設定のリストが表示されます。
新しい認証設定 を選択し、認証設定の追加 ページで次の詳細を入力します。
[チャネル タイプ] ページで、名前を入力し、チャネル タイプとして「選択 Apple Messages for Business 」と入力します。
認証タイプ OAuth 2.0 OpenID 接続フロー を変更します。
認証設定の追加 ページで、以下の情報を入力します:
-
クライアント ID: 認証サーバーが発行した OAuth 2.0 クライアント識別子。
-
クライアント シークレット: 承認サーバーに送信された要求を認証するために使用するクライアント シークレット。
-
スコープ: 追加された各スコープは、顧客に要求したユーザー データの部分を指定します。 スコープのコンテンツは、サービス プロバイダーから入手できるものと、完全に一致する必要があります。
- アクセス トークン URL: アクセス トークンを要求できるサービス プロバイダーのエンドポイント。
-
復号化されたトークンURL: OAuth 2.0 APIがスコープ内で要求された顧客情報を取得できる エンドポイント。
- 追加パラメーター: 要求からの追加パラメーターの取得を認証サービスに許可します。
-
クライアント ID: 認証サーバーが発行した OAuth 2.0 クライアント識別子。
追加の詳細 ページでは、オプションでアクセス トークンの有効期限を秒単位で定義できます。 既定の有効期限は 1 時間です。
指定された時間が経過すると、以前に認証された会話の「顧客概要」セクションの「認証済み」フィールドが「いいえ」に変わります。リッチ メッセージ ページで、選択 追加し、この認証設定に関連付ける1つ以上のリッチ メッセージを 選択 します。
概要 ページを確認し、次へ を選択します。 認証の設定を構成しました。
リダイレクト情報 ページで URL をコピーします。 このURLを、許可されたコールバックURLの下にある認証サービス プロバイダーのWebサイトに追加します。
完了を選択します。
Apple Messages for Business チャネルに認証を追加する
認証を追加するチャネル インスタンスを含むワークストリームを開きます。
チャネル設定の 動作 ページで、 認証設定に移動し、機能を有効にして、ドロップダウン メニューから正しい設定を 選択 します。 詳細については、 チャネルの設定 Apple Messages for Business をご覧ください。
各チャネル インスタンスの認証設定を確認または更新するには、選択 編集 します。
関連情報
チャット ウィジェットの追加
会話の事前アンケートを構成する
クイック返信の作成
作業時間を作成および管理します。
チャット ウィジェットを Power Apps ポータルに埋め込む
顧客を自動的に識別する