---
title: "スケールされた環境でAPI認証キーを設定する"
slug: "configure-api-authentication-keys-in-a-scaled-environment"
abstract: "Sitecore xDBレポートサービスおよびxDB処理サーバーでAPI認証鍵を設定する方法。"
---
# スケールされた環境でAPI認証キーを設定する

**適用対象**

xDB処理、xDB Reporting and Content Management。

**Sitecoreインストールフレームワーク**

セキュリティキーはデフォルトで設定 **されていません** 。

**Azure Toolkit**

セキュリティキーはARMテンプレートに入力される際にデフォルトで設定されます。

スケールアップされたSitecore環境でサーバー間の安全な通信を確保するために、クライアントからの各リクエストはxDB ReportingサーバーとxDB Processingサーバーで認証されなければなりません。例えば、リモートのReporting Serverと通信する必要があるContent Managementサーバー上などです。スケール環境では、認証された当事者のみがリモートサーバー上のデータにアクセスできます。

各サーバーリクエストごとに、Sitecore.Analytics.Commons.ApiKeyHttpTransportFactoryクラスはリクエストされたページにカスタムHTTPヘッダーを追加します。ヘッダーにはAPI認証キーが含まれており、これはConnectionStrings.configファイルに保存されています。

各サーバーでは、認証プロセス中に使用できるAPI認証キーを入力する必要があります。リクエストを成功裏に認証するには、キーが同一でなければなりません。例えば、レポートサーバーのキーはコンテンツ管理サーバーに保存されたキーと一致していなければ、レポートからデータを正常に取得できません。

![communication-between-cm-and-reporting1.png](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/92/platform-administration-and-architecture/images/communication-between-cm-and-reporting1.png)

サーバー認証プロセスは以下の通りです:

-   Content Managementクライアントは Sitecore.Analytics.Commons.ApiKeyHttpTransportFactory クラスを使ってレポートサーバーからデータを要求します。
-   レポーティングサーバーがリクエストを受信すると、 ApiKeyReportDataProvider クラスはHTTPヘッダーのAPI認証キーがレポーティングサーバーに保存されているものと一致しているか(大文字を区別して)チェックします。
-   2つのキーが一致すれば、リクエストの処理を継続でき、データが取得されてContent Managementクライアントに返送されます。
-   認証キーが一致しない場合、サーバーは403(禁止)ステータスコードを返します。

> !重要ウェブサイト全体でHTTPSを使用してください。 Sitecore.Xdb.Remote.Client.configファイルでは、RequireHttpsがデフォルトで有効で、すべての本番環境で有効にしておくべきです。HTTPは本番サーバーには十分に安全ではなく、ローカルテストや開発インスタンスでのみ使用すべきです。

## オプション#1:共有API認証キーの設定

以下の節では、Content ManagementとProcessing and Reportingサーバー間でAPI認証キーを設定する方法について説明します。この場合、ProcessingとReportingは同じ認証キーを使用します。

### Content Managementサーバー上で

Content ManagementサーバーでAPI認証キーを設定するには:

1.  Content ManagementサーバーでWebsite\\App\_Configフォルダに移動し、ConnectionString.configファイルを開いてください。
    
2.  ConnectionStrings.configファイルでreporting.apikey接続文字列を見つけ、ASCII文字列をキーとして入力します(デフォルト最小32文字)。キーは数字やテキストの組み合わせでいくつも構いません。
    
    例えば:
    
    <add name="reporting.apikey" connectionString="67588d50667e47e0a02cb919185f7c30"/>
    
    > !重要選択した文字列は、Sitecore.Xdb.Remote.Client.configファイルの属性で指定された最小のAPIキー長MinimalApiKeyLength準拠しなければなりません。
    

### 処理および報告サーバーについて

処理および報告サーバーでAPI認証鍵を設定するには:

1.  処理サーバーとレポートサーバーでは、 Website\\App\_Config フォルダに移動して ConnectionStrings.config ファイルを開きます。
2.  ConnectionStrings.configファイルにreporting.apikey接続文字列を追加します。キーはContent Managementサーバーと一致しなければなりません。

## オプション#2:処理用の別個のAPI認証キーを設定する

以下のセクションでは、Content Management and ProcessingとContent Management and Reportingの間で異なるAPI認証キーを設定する方法について説明します。

### Content Managementサーバー上で

Content Managementサーバー、または処理サーバーからデータ要求を行っている他のサーバー上で:

1.  Sitecore.Xdb.Remote.Client.configファイル内で次のセクションを見つけ、connectionStringNameパラメータを新しい値に設定します。例えば、processing.apikey:
    
    <processing>
     <remote enabled="true">
     <reportingStorageManagerProxy type="Sitecore.Analytics.Aggregation.History.Remoting.ReportingStorageManagerProxy, Sitecore.Analytics.Aggregation">
     <param desc="serviceLocation">/~/v81/processing/reportingstoragemanager/</param>
     <param desc="webTransportFactory" ref="processing/remote/httpTransportFactory" />
     </reportingStorageManagerProxy>
     <httpTransportFactory type="Sitecore.Analytics.Core.ApiKeyHttpTransportFactory, Sitecore.Analytics.Core" singleInstance="true">
     <param desc="serviceUrl"></param>
     <param desc="requireHttps" type="System.Boolean" factoryMethod="Parse" arg0="true" />
     <param desc="connectionStringName">processing.apikey</param>
     <!-- The same header name must be defined in Sitecore.Xdb.Remote.Server.config for reporting.-->
     <param desc="headerName">X-Processing-Api-Key</param>
     <param desc="minimalApiKeyLength">32</param>
     </httpTransportFactory>
     </remote>
    </processing>
    
2.  ConnectionStrings.configファイルに2つのAPI認証キーを追加します:
    
    例えば:
    
    <add name="reporting.apikey" connectionString="24588d50667e47e0a02cb919185f7c30"/>
    <add name="processing.apikey" connectionString="90588d50667e47e0a02cb919185f7c30"/>
    

### 処理サーバー上で

処理サーバーでAPI認証鍵を設定するには:

1.  Sitecore.Xdb.Remote.Client.configファイル内で、以下のセクションを見つけて、示す通りconnectionStringNameパラメータを更新してください。
    
    <processing role:require="Processing">
     <authenticationChecker singleInstance="true" type="Sitecore.Xdb.Reporting.HttpHeaderAuthenticationChecker, Sitecore.Xdb.Reporting">
     <!-- The same header name must be defined in Sitecore.Xdb.Remote.Client.config for CM instance.-->
     <param desc="headerName">X-Processing-Api-Key</param>
     <param desc="connectionStringName">processing.apikey</param>
     <param desc="logger" resolve="true" type="Sitecore.Abstractions.BaseLog, Sitecore.Kernel" />
     </authenticationChecker>
    </processing>
    
2.  ConnectionStrings.configファイルに新しいAPI認証キーを追加します:
    
    <add name="processing.apikey" connectionString="90588d50667e47e0a02cb919185f7c30"/>
    
3.  もし存在する場合はreporting.apikeyファイルからConnectionStrings.configファイルから削除してください。
    

### レポーティングサーバーで

レポートサーバーでAPI認証キーを設定するには:

-   ConnectionStrings.configファイルに新しいAPI認証キーを追加します:
    
    <add name="reporting.apikey" connectionString="24588d50667e47e0a02cb919185f7c30"/>
    

## オプション構成

### オプションContent Managementサーバー構成

以下の表は、必要に応じて後で調整可能なSitecore.Xdb.Remote.Client.configファイルのデフォルトパラメータ設定を示しています。処理およびレポート用のパラメータ設定を異なる設定で設定できます。

パラメータ

概要

ServiceUrl

すべてのリクエストで使うサービスホストURLです。報告サーバーのホスト名が変わった場合はこれを更新してください。

ConnectionStringName

API認証キーを含む接続文字列の名前です。

ヘッダー名

リクエストに含めるヘッダーの名前。両方のサーバーで同じヘッダー名を使いましょう。例えば、X-Reporting-Api-Keyなどです。

最小ApiKeyLength

これはAPI認証キーの最小鍵長を指定します。短すぎるとリクエストは送信されません。長い鍵の方が安全です。

RequireHttps

ブールスイッチはデフォルトで「true」に設定されています。本番環境では必ずHTTPSを使いましょう。もし「true」に設定されていて、そのスキーマが HTTPSでなければ例外が発生します。

これらの構成パラメータはSitecore.Xdb.Remote.Client.configファイルの以下のセクションに記載されています。

<reporting>
 <remote enabled="true">
 <httpTransportFactory type="Sitecore.Analytics.Core.ApiKeyHttpTransportFactory, Sitecore.Analytics.Core" singleInstance="true">
 <param desc="serviceUrl"></param>
 <param desc="requireHttps" type="System.Boolean" factoryMethod="Parse" arg0="true" />
 <param desc="connectionStringName">reporting.apikey</param>
 <!-- The same header name must be defined in Sitecore.Xdb.Remote.Server.config for reporting.-->
 <param desc="headerName">X-Reporting-Api-Key</param>
 <param desc="minimalApiKeyLength">32</param>
 </httpTransportFactory>
 <proxyDataSource type="Sitecore.Xdb.Reporting.Datasources.Remote.RemoteReportDataSourceProxy, Sitecore.Xdb.Reporting" />
 <path>/~/v75/reporting/remotedatasourceproxy/</path>
 </remote>
</reporting>
<processing>
 <remote enabled="true">
 <reportingStorageManagerProxy type="Sitecore.Analytics.Aggregation.History.Remoting.ReportingStorageManagerProxy, Sitecore.Analytics.Aggregation">
 <param desc="serviceLocation">/~/v81/processing/reportingstoragemanager/</param>
 <param desc="webTransportFactory" ref="processing/remote/httpTransportFactory" />
 </reportingStorageManagerProxy>
 <httpTransportFactory type="Sitecore.Analytics.Core.ApiKeyHttpTransportFactory, Sitecore.Analytics.Core" singleInstance="true">
 <param desc="serviceUrl"></param>
 <param desc="requireHttps" type="System.Boolean" factoryMethod="Parse" arg0="true" />
 <param desc="connectionStringName">reporting.apikey</param>
 <!-- The same header name must be defined in Sitecore.Xdb.Remote.Server.config for reporting.-->
 <param desc="headerName">X-Processing-Api-Key</param>
 <param desc="minimalApiKeyLength">32</param>
 </httpTransportFactory>
 </remote>
</processing>

### オプションの報告サーバー設定

レポーティングサーバーでは、Sitecore.Analytics.Reporting.ApiKeyReportDataProviderは Sitecore.Xdb.Remote.Server.configファイルの<dataProvider>設定セクションで定義されています。Sitecore.Xdb.Remote.Server.configファイルには以下のデフォルトパラメータが含まれています:

パラメータ

概要

ConnectionStringName

正しいAPI認証キーを含む接続文字列の名前(これはリクエストを行っているサーバーのキーと一致するはずです)。

ヘッダー名

受信サーバーリクエストで確認するためのヘッダーの名前。

これらの構成パラメータはSitecore.Xdb.Remote.Client.configファイルの以下のセクションに記載されています。

<reporting role:require="Reporting">
 <authenticationChecker singleInstance="true" type="Sitecore.Xdb.Reporting.HttpHeaderAuthenticationChecker, Sitecore.Xdb.Reporting">
 <!-- The same header name must be defined in Sitecore.Xdb.Remote.Client.config for CM instance.-->
 <param desc="headerName">X-Reporting-Api-Key</param>
 <param desc="connectionStringName">reporting.apikey</param>
 <param desc="logger" resolve="true" type="Sitecore.Abstractions.BaseLog, Sitecore.Kernel" />
 </authenticationChecker>
</reporting>

### オプションのプロセッシングサーバー構成

パラメータ

概要

ConnectionStringName

正しいAPI認証キーを含む接続文字列の名前(これはリクエストを行っているサーバーのキーと一致するはずです)。

ヘッダー名

受信サーバーリクエストで確認するためのヘッダーの名前。

<processing role:require="Processing">
 <authenticationChecker singleInstance="true" type="Sitecore.Xdb.Reporting.HttpHeaderAuthenticationChecker, Sitecore.Xdb.Reporting">
 <!-- The same header name must be defined in Sitecore.Xdb.Remote.Client.config for CM instance.-->
 <param desc="headerName">X-Processing-Api-Key</param>
 <param desc="connectionStringName">processing.apikey</param>
 <param desc="logger" resolve="true" type="Sitecore.Abstractions.BaseLog, Sitecore.Kernel" />
 </authenticationChecker>
</processing>