エンタイトルメントは、ユーザーに認証とコンテンツ承認を提供する 1 つの方法です。ログインしたユーザーは、それまで表示できなかったコンテンツにアクセスできるようになります。エンタイトルメントには 2 つの主な用途があります。

  • ログインアカウントに基づいて、様々なコンテンツを様々なユーザーに提供すること。例えば、スキューバダイビングアプリでは、コースに新規登録する生徒に一式のコレクションを提供し、スキューバインストラクターに別の一式のコレクションを提供することができます。
  • デジタル版購読を印刷版購読に関連付けること。ユーザーはストア(iTunes App Store など)を通じてコンテンツを購入または購読するか、発行者を通じて直接ログインすることができます。ユーザーのログインアカウントが発行者のエンタイトルメントデータベースに登録されている場合、ログインすることでユーザーはコンテンツにアクセスできるようになります。

エンタイトルメントは、すべてのプラットフォーム(iOS、Android、Windows、デスクトップ Web Viewer)でサポートされます。

エンタイトルメントを使用するには、Direct Entitlement API v2 を実装するエンタイトルメントサービスが必要です。

 

 

ダウンロード

エンタイトルメントのしくみ

 

次の点に注意してください。

  • エンタイトルメントはコレクションレベルで決まります。
  • エンタイトルメントは、コレクションに関連付けられた製品に基づきます。製品は、オンデマンドポータルの「製品と購読」セクションに一覧表示されます。
  • コレクションへの権利を付与されたユーザーは、そのコレクション内のすべての記事にアクセスできます。
  • ユーザーには、ネストされたコレクションへの権利は自動的に付与されません。
  • コレクションの製品タイプが「権利付与済み」に設定されている場合、各記事の「記事アクセス」設定により、ユーザーがその記事にアクセスできるかどうかが決まります。記事を「無料」に設定した場合、ユーザーは記事を表示できます。記事を「保護」に設定した場合、ユーザーは許可されるまで記事を表示できません。記事を「有料」に設定した場合、しきい値の設定が適用されます。「有料」としての記事の設定は、主に購入前にユーザーにコンテンツのプレビューを許可する必要のある商用向けのアプリに使用されます(AEM Mobile アプリでのペイウォールと記事のプレビューを参照)。
  • コレクションに「制限付き」に設定された製品がある場合、ユーザーはログインして権利付与済みになるまでコレクションを表示できません(AEM Mobile アプリでの制限付きコレクションを参照)。
  • コレクションに「無料」に設定された製品がある場合、「記事アクセス」が「保護」または「有料」に設定されていても、コレクション内のすべての記事は無料として扱われます。
  • デフォルトでは、ユーザーが「アカウント」または「ログイン」オプションをタップすると、標準的なログインプロンプトがアプリに表示されます。このログインインターフェイスを変更するために、カスタム認証を設定できます。例えば、Facebook や Google などの ID プロバイダー経由のログインを有効にし、有効にした ID プロバイダーと連携するようにエンタイトルメントサーバーを構成できます(AEM Mobile アプリでのカスタム認証を参照)。

エンタイトルメントを有効にする 

  1. エンタイトルメントサーバーを設定します。

    Experience Manager Mobile では、Direct Entitlement API v2 を実装するエンタイトルメントサービスが必要です。エンタイトルメントサーバーのセットアップについては、次の記事を参照してください。

    エンタイトルメントサーバーの推奨事項

    • 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 証明書のリストについては、受諾可能な証明書 | 直接権利付与を参照してください。

     

  2. (マスター管理者)プロジェクトで使用するエンタイトルメントサービスを作成します。

    マスター管理者は「マスター設定」の「エンタイトルメントサービス」タブを使用して、エンタイトルメントを使用するアカウント内にあるすべてのプロジェクトのエンタイトルメントサービスを作成します。プロジェクトレベルでエンタイトルメントを有効にするには、少なくとも 1 つのエンタイトルメントサービスを作成してください。

    エンタイトルメントエンドポイント

    使用するエンタイトルメントサービスのエンタイトルメントエンドポイント URL を指定します。

    認証エンドポイント

    エンタイトルメントサービスの SignInWithCredentials エンドポイントがエンタイトルメントエンドポイントと異なる場合には、その URL を指定します。

    エンタイトルメントのキャッシュ

    使用しているサービスによって許可されるエンタイトルメント情報をキャッシュに含めることができる時間(秒単位)を指定します。このキャッシュ期間が終わると、エンタイトルメントサービスに接続して更新済みのエンタイトルメント情報を利用できます。0 ~ 31546000 秒(約 1 年)の範囲内の値を指定します。値を指定しないと、エンタイトルメント応答は値 0 を指定した場合と同様、キャッシュされません。

    エンタイトルメントが不足している場合でも指定された同じ値に従ってキャッシュされます(ただし、上限は 1 時間です)。そのため、エンタイトルメントのキャッシュ時間を 1 時間よりずっと長くすると安全です。追加したエンタイトルメントが有効になるには最長 1 時間かかるからです。難点は、エンタイトルメントの削除が有効になるまでにはさらに時間がかかる可能性があることです。その点が問題とならない場合には、大きいキャッシュ値(1 か月など)を設定することをお勧めします。キャッシュ値を大きくすると、サーバーの読み込みが減り、ユーザーへの応答性と信頼性が増します。

    そのように長い時間に渡ってキャッシュできない場合には、通常のユーザーセッションより長い値をエンタイトルメントのキャッシュ値とすることをお勧めします。1 分などの短い値を指定しても、読み込み時間と応答性の向上に役立ちます。

    認証トークンのキャッシュ

    サービスによって提供される認証トークンをキャッシュに含めることができる時間(秒単位)を指定します。このキャッシュ期間が終わると、サービスに接続して認証トークンを更新できます。0 ~ 31546000 秒の範囲内の値を指定します。値を指定しないと、認証トークは 3600 秒間(1 時間)キャッシュされます。0 を指定すると、認証トークンはキャッシュされません(推奨されません)。

    渡したものとは異なる authToken を RenewAuthToken API が必ず返す場合には、認証トークンのキャッシュ値をエンタイトルメントのキャッシュ値より小さくしないでください。

    接続タイムアウト

    接続が確立されて応答を取得するまでにエンタイトルメントサーバーが待機する秒数(1 ~ 60)を指定します。値を指定しないと、接続タイムアウトは 15 秒 に設定されます。

  3. プロジェクト設定を編集し、「アクセス」タブをクリックして、次のオプションを指定します。

    • エンタイトルメントを有効にする」を選択します。このオプションを有効にするには、「マスター設定」で少なくとも 1 つのエンタイトルメントサービスを作成してください。
    • 「マスター設定」で作成したエンタイトルメントサービスを選択します。必ず、プロジェクトに適したエンタイトルメントサービスを選択してください。
    • エンタイトルメントサービスで使用されているバンドル ID を指定します。アプリ作成時に指定したものと異なるバンドル ID がエンタイトルメントサービスで必要な場合に、プロジェクト設定でバンドル ID を指定する必要があります。バンドル ID は、デスクトップ Web Viewer のエンタイトルメントにも必要です。
    • 必要に応じて、アカウントを作成する場合の URL およびアカウントを忘れた場合の URL を指定します。ユーザーはこれらのボタンをタップすることで、指定した Web ページを表示できます。

     

  4. コレクションを公開します。

    コレクションを公開すると、製品 ID が「製品と購読」に追加されます(それ以前に製品 ID を作成し、コレクション編集時にそれを選択していた場合を除く)。

  5. ポータルの「製品と購読」セクションで、各コレクションに関連付けられた製品を選択し、「権利付与済み」または「制限付き」になるように編集します。

    製品のタイプを定義するとき、「無料」、「権利付与済み」、または「制限付き」を選択できます。無料のコレクションはすべてのユーザーが使用できます。コレクションにアクセスするためにユーザーにログインさせる必要がある場合は、「権利付与済み」または「制限付き」を選択します。権利付与済みコレクションはすべてのアプリのユーザーに表示されますが、保護された記事にはペイウォールが含まれます。制限付きコレクションは、ユーザーがアクセスするためログインするまでユーザーに表示されません。制限付きコレクションについて詳しくは、AEM Mobile での制限付きコレクションを参照してください。

    製品のタイプの指定
    製品のタイプの指定

  6. 製品のタイプが「権利付与済み」に設定されたコレクションの場合、記事のプロパティを編集して、各記事を「無料」、「有料」、「保護」のいずれに設定するかを指定します。

    「権利付与済み」コレクションでは、すべてのユーザーが無料の記事にアクセスできます。保護された記事では、ユーザーにログインを求めるペイウォールが表示されます。有料の記事には、しきい値の設定が適用されます。

    「無料」または「保護された」コレクションでは、記事アクセスの設定は問題になりません。無料コレクション内の記事にはすべてのユーザーがアクセスでき、制限付きコレクション内の記事はユーザーがログインするまで表示されません。

  7. アプリをビルドし、ログイン機能をテストします。

    プリフライトアプリでは、エンタイトルメント機能はサポートされていません。

エンタイトルメントサービスのパフォーマンス

エンタイトルメント要求はいつでもすぐに扱われるのが理想的です。一般に、エンタイトルメントサービスからの応答時間が短ければ短いほど、1 秒あたりに対応できる要求数が多くなります。

エンタイトルメント通知とプッシュ通知の両方を使用すると、サインインしているユーザーの割合によっては、トラフィックの深刻なスパイクが生じることがあります。プッシュ時にはサーバーの負荷をモニタリングし、それに応じてプッシュ通知の送信率を抑えることをお勧めします。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー