エンタイトルメントは、ユーザーに認証とコンテンツ承認を提供する 1 つの方法です。ログインしたユーザーは、それまで表示できなかったコンテンツにアクセスできるようになります。エンタイトルメントには 2 つの主な用途があります。
- ログインアカウントに基づいて、様々なコンテンツを様々なユーザーに提供すること。例えば、スキューバダイビングアプリでは、コースに新規登録する生徒に一式のコレクションを提供し、スキューバインストラクターに別の一式のコレクションを提供することができます。
- デジタル版購読を印刷版購読に関連付けること。ユーザーはストア(iTunes App Store など)を通じてコンテンツを購入または購読するか、発行者を通じて直接ログインすることができます。ユーザーのログインアカウントが発行者のエンタイトルメントデータベースに登録されている場合、ログインすることでユーザーはコンテンツにアクセスできるようになります。
エンタイトルメントは、すべてのプラットフォーム(iOS、Android、Windows、デスクトップ Web Viewer)でサポートされます。
エンタイトルメントを使用するには、Direct Entitlement API v2 を実装するエンタイトルメントサービスが必要です。
ダウンロード
次の点に注意してください。
- エンタイトルメントはコレクションレベルで決まります。
- エンタイトルメントは、コレクションに関連付けられた製品に基づきます。製品は、オンデマンドポータルの「製品と購読」セクションに一覧表示されます。
- コレクションへの権利を付与されたユーザーは、そのコレクション内のすべての記事にアクセスできます。
- ユーザーには、ネストされたコレクションへの権利は自動的に付与されません。
- コレクションの製品タイプが「権利付与済み」に設定されている場合、各記事の「記事アクセス」設定により、ユーザーがその記事にアクセスできるかどうかが決まります。記事を「無料」に設定した場合、ユーザーは記事を表示できます。記事を「保護」に設定した場合、ユーザーは許可されるまで記事を表示できません。記事を「有料」に設定した場合、しきい値の設定が適用されます。「有料」としての記事の設定は、主に購入前にユーザーにコンテンツのプレビューを許可する必要のある商用向けのアプリに使用されます(AEM Mobile アプリでのペイウォールと記事のプレビューを参照)。
- コレクションに「制限付き」に設定された製品がある場合、ユーザーはログインして権利付与済みになるまでコレクションを表示できません(AEM Mobile アプリでの制限付きコレクションを参照)。
- コレクションに「無料」に設定された製品がある場合、「記事アクセス」が「保護」または「有料」に設定されていても、コレクション内のすべての記事は無料として扱われます。
- デフォルトでは、ユーザーが「アカウント」または「ログイン」オプションをタップすると、標準的なログインプロンプトがアプリに表示されます。このログインインターフェイスを変更するために、カスタム認証を設定できます。例えば、Facebook や Google などの ID プロバイダー経由のログインを有効にし、有効にした ID プロバイダーと連携するようにエンタイトルメントサーバーを構成できます(AEM Mobile アプリでのカスタム認証を参照)。
-
Experience Manager Mobile では、Direct Entitlement API v2 を実装するエンタイトルメントサービスが必要です。エンタイトルメントサーバーのセットアップについては、次の記事を参照してください。
- エンタイトルメントサービスの設定(基本的なエンタイトルメントサービスのコード例を含む)
- Direct Entitlement API v2
- On-Demand Services API を使用してコレクションおよび製品の詳細にアクセスする
エンタイトルメントサーバーの推奨事項
- HTTP ではなく HTTPS ドメインを使用することをお勧めします。HTTP を使用する場合は、iOS アプリを作成するときに、「HTTP からのコンテンツを許可」オプションを必ず選択してください。
- Java 8 JRE(以降)および Apache HttpClient ライブラリを使用してリクエストを実行し、サーバーをテストします。TLS 1.2 を使用することをお勧めします。TLS 1.1 および TLS 1.0 はサポートされていますが、Apple ATS ガイドラインに準拠していません。TLS 1.1 または 1.0 を使用する場合は、iOS アプリを作成するときに「HTTPからのコンテンツを許可」オプションを選択します。SSL 3 はサポート対象外になり、TLS 1.0 の使用はお勧めしていません。
- サーバー証明書は期限が切れる前に更新することをお勧めします。証明書の期限が切れると、エンタイトルメントサービスとの通信機能が完全に停止します。
- サポートされている SSL 証明書のリストについては、受諾可能な証明書 | 直接権利付与を参照してください。
- エンタイトルメントサービスの設定(基本的なエンタイトルメントサービスのコード例を含む)
-
マスター管理者は「マスター設定」の「エンタイトルメントサービス」タブを使用して、エンタイトルメントを使用するアカウント内にあるすべてのプロジェクトのエンタイトルメントサービスを作成します。プロジェクトレベルでエンタイトルメントを有効にするには、少なくとも 1 つのエンタイトルメントサービスを作成してください。
エンタイトルメントのキャッシュ
使用しているサービスによって許可されるエンタイトルメント情報をキャッシュに含めることができる時間(秒単位)を指定します。このキャッシュ期間が終わると、エンタイトルメントサービスに接続して更新済みのエンタイトルメント情報を利用できます。0 ~ 31546000 秒(約 1 年)の範囲内の値を指定します。値を指定しないと、エンタイトルメント応答は値 0 を指定した場合と同様、キャッシュされません。
エンタイトルメントが不足している場合でも指定された同じ値に従ってキャッシュされます(ただし、上限は 1 時間です)。そのため、エンタイトルメントのキャッシュ時間を 1 時間よりずっと長くすると安全です。追加したエンタイトルメントが有効になるには最長 1 時間かかるからです。難点は、エンタイトルメントの削除が有効になるまでにはさらに時間がかかる可能性があることです。その点が問題とならない場合には、大きいキャッシュ値(1 か月など)を設定することをお勧めします。キャッシュ値を大きくすると、サーバーの読み込みが減り、ユーザーへの応答性と信頼性が増します。
そのように長い時間に渡ってキャッシュできない場合には、通常のユーザーセッションより長い値をエンタイトルメントのキャッシュ値とすることをお勧めします。1 分などの短い値を指定しても、読み込み時間と応答性の向上に役立ちます。
-
- 「エンタイトルメントを有効にする」を選択します。このオプションを有効にするには、「マスター設定」で少なくとも 1 つのエンタイトルメントサービスを作成してください。
- 「マスター設定」で作成したエンタイトルメントサービスを選択します。必ず、プロジェクトに適したエンタイトルメントサービスを選択してください。
- エンタイトルメントサービスで使用されているバンドル ID を指定します。アプリ作成時に指定したものと異なるバンドル ID がエンタイトルメントサービスで必要な場合に、プロジェクト設定でバンドル ID を指定する必要があります。バンドル ID は、デスクトップ Web Viewer のエンタイトルメントにも必要です。
- 必要に応じて、アカウントを作成する場合の URL およびアカウントを忘れた場合の URL を指定します。ユーザーはこれらのボタンをタップすることで、指定した Web ページを表示できます。
- 「エンタイトルメントを有効にする」を選択します。このオプションを有効にするには、「マスター設定」で少なくとも 1 つのエンタイトルメントサービスを作成してください。
-
製品のタイプを定義するとき、「無料」、「権利付与済み」、または「制限付き」を選択できます。無料のコレクションはすべてのユーザーが使用できます。コレクションにアクセスするためにユーザーにログインさせる必要がある場合は、「権利付与済み」または「制限付き」を選択します。権利付与済みコレクションはすべてのアプリのユーザーに表示されますが、保護された記事にはペイウォールが含まれます。制限付きコレクションは、ユーザーがアクセスするためログインするまでユーザーに表示されません。制限付きコレクションについて詳しくは、AEM Mobile での制限付きコレクションを参照してください。
製品のタイプの指定