Adobe
Products

Top destinations

  • Adobe Creative Cloud
  • Creative Suite
  • Adobe Marketing Cloud
  • Acrobat
  • Photoshop
  • SiteCatalyst
  • Students
  • Elements family

Adobe Creative Cloud

  • What is Adobe Creative Cloud?
  • Design
  • Web
  • Photography
  • Video
  • Students
  • Teams
  • Enterprise
  • Educational institutions

Design and photography

  • Photoshop
  • Illustrator
  • InDesign
  • Adobe Muse
  • Lightroom

Video

  • Adobe Premiere
  • After Effects

Web development and HTML5

  • Edge Tools & Services [opens in a new window]
  • Dreamweaver
  • Gaming [opens in a new window]

Adobe Marketing Cloud

  • What is Adobe Marketing Cloud?
  • Digital analytics
  • Social marketing
  • Web experience management
  • Testing and targeting
  • Media optimization

Analytics

  • SiteCatalyst
  • Adobe Discover
  • Insight

Social

  • Adobe Social

Experience Manager

  • CQ
  • Scene7

Target

  • Test&Target
  • Recommendations
  • Search&Promote

Media Optimizer

  • AdLens
  • AudienceManager
  • AudienceResearch

Document services

  • Acrobat
  • EchoSign [opens in a new window]
  • FormsCentral [opens in a new window]
  • SendNow [opens in a new window]
  • Acrobat.com [opens in a new window]

Publishing

  • Digital Publishing Suite

  • See all products
Business solutions

By business need

  • Digital analytics
  • Digital publishing
  • Document management
  • Media optimization
  • Social marketing
  • Testing and targeting
  • Video editing and serving
  • Web development [opens in a new window]
  • Web experience management
  • See all business needs

By industry

  • Broadcast
  • Education
  • Financial services
  • Government
  • Publishing
  • Retail
  • See all industries
Support & Learning

I need help

  • Products
  • Adobe Creative Cloud
  • Adobe Marketing Cloud
  • Forums [opens in a new window]

I want to learn

  • Training and tutorials
  • Certification [opens in a new window]
  • Adobe Developer Connection
  • Adobe Design Center
  • Adobe TV [opens in a new window]
  • Adobe Marketing Center
  • Adobe Labs [opens in a new window]
Download
  • Product trials
  • Adobe Flash Player
  • Adobe Reader
  • Adobe AIR
  • See all downloads
Company
  • Careers at Adobe
  • Investor Relations
  • Newsroom
  • Privacy
  • Corporate Social Responsibility
  • Customer Showcase
  • Contact us
  • More company info
Buy
  • For personal and professional use
  • For students, educators, and staff
  • For small and medium businesses
  • Volume Licensing
  • Special offers
  • Adobe Marketing Cloud sales [opens in a new window]
Search
 
Info Sign in
Why sign in? Sign in to manage your account and access trial downloads, product extensions, community areas, and more.
Welcome,
My Adobe
My orders
My information
My preferences
My products and services
Sign out
My cart
Privacy My Adobe
Adobe
Products Sections Buy   Search  
Solutions Company
Help Learning
Sign in Sign out Privacy My Adobe
Preorder Estimated Availability Date. Your credit card will not be charged until the product is shipped. Estimated availability date is subject to change. Preorder Estimated Availability Date. Your credit card will not be charged until the product is ready to download. Estimated availability date is subject to change.
Qty:
Purchase requires verification of academic eligibility
Subtotal
Promotions
Estimated shipping
Tax
Calculated at checkout
Total
Review and Checkout
Adobe Developer Connection / Digital publishing /

Corporate Entitlement with IIS

by Scott Dreier

Scott Dreier

Content

  • A simple corporate use case
  • Overview of solution
  • Setup and Installation
  • DPS application integration
  • Where to go from here

Created

13 February 2013

Page tools

Share on Facebook
Share on Twitter
Share on LinkedIn
Bookmark
Print
Digital Publishing Suite, En...
Was this helpful?
Yes   No

By clicking Submit, you accept the Adobe Terms of Use.

 
Thanks for your feedback.
Prerequisite knowledge
  • Microsoft Web server infrastructure and deployments
  • Leveraging Direct Entitlement for Adobe DPS
  • Direct Entitlement Starter kit for Adobe DPS
  • LDAP
  • SQL Server

User level: Intermediate

Required products
  • Digital Publishing Suite, Enterprise Edition

Other required products

  • Microsoft Windows Server 2008 R2 Enterprise Edition
  • PHP for IIS
  • SQL Server 2008 Express
  • LDAP
Sample files
corporate_entitlement.zip
By downloading software from the Adobe Web site you agree to the terms of our license agreement. Please read it before downloading.

Corporations are publishers too!  And while they share many similarities with consumer publishers, the case for direct entitlement can be a bit different.  For instance, corporate publishers usually maintain a list of users (i.e. employees) internally via LDAP or other active directory, but they do not sell subscriptions or renewals.

For the corporate publisher that simply wants to check whether a user is entitled to content (e.g. an employee or agent), this article will describe a simple process of direct entitlement.

This article assume familiarity with Direct Entitlement APIs.  For a detailed introduction to the APIs, click here.

For a introduction to a the Direct Entitlement Starter Kit, from which this solution is derived, click here.

A simple corporate use case

A publisher creates an application that is distributed either via the AppStore OR internally via Enterprise provisioning.  No In-App Purchases or subscriptions are going to be enabled because the content is never being sold.  All folio content is available to any authorized user.  For this article, an authorized user is an active employee or agent.  Specifically, it is a user that has an active record within the corporate managed LDAP.

Access to Content

Any authorized user will have un-restricted access to any folio published to the application account.  When a user leaves the company, they would retain access to the content that has been downloaded.  However, any new folios published would not be available to this user.

Windows?

This was a recent challenge.  Many small-medium sized businesses run on a Microsoft Web Stack (IIS, Windows Server, SQL Server, etc.) and have little inclination to expand to a LAMP stack.   Microsoft provides a PHP equivalent (5.3.19) for their systems and adapting the Direct Entitlement starter kit to use SQL Server instead of MySQL is trivial.

Overview of solution

The Entitlement Server is deployed in the Corporate DMZ to allow access from external devices (iPads and Adobe’s Fulfillment service) and to access the Corporation’s LDAP which is typically hidden behind a firewall.  For this example, the SQL Server database was co-located behind the firewall since it would be storing user’s emailAddress, password and their corresponding authToken.

Figure 1: Overview of a simple implementation
Figure 1: Overview of a simple implementation

The Entitlement Server implements the 4 Direct Entitlement endpoints (SignInWithCredentials, RenewAuthToken, entitlements, and verifyEntitlement).  Each will be discussed in detail below.

SignInWithCredentials

The credentials (emailAddress, password) are validated against the corporate LDAP.  If the user is validated (i.e. ‘exists’ and the account is ‘active’), then an authToken is created.  The authToken, emailAddress, and password are all stored in the database for later lookup.

RenewAuthToken

The Entitlement Server (ES) looks up an entry in the database for the provided authToken.  If found, the credentials associated with this authToken are validated against the corporate LDAP.  If the user is validated, the authToken is confirmed and HTTP 200 is returned.  If the user’s account is either non-existent (e.g. left the company since SignInWithCredentials was last called) or not ‘active’ (e.g. their password expired, or account is blocked), then the database entry is purged and a HTTP 401 is returned.

entitlements

If the authToken provided is found in the database, the user is valid.  (RenewAuthToken is called often enough to not require another LDAP check here.)  If the user is valid, the ES contacts Adobe’s fulfillment service to obtain a list of published folios.  All folios published as Public will be marked as entitled and returned.

verifyEntitlement

Upon attempt to download a folio, Adobe’s fulfillment service will contact the ES to check whether the folio is indeed still valid.  If the authToken is valid, the entitlement is valid and HTTP 200 is returned.

Setup and Installation

This example was deployed on: Windows Server 2008 R2, SQL Server 2008 Express, PHP for IIS (v5.3.19) and OpenLDAP.  You should use the Microsoft Web Platform Installer to download/install the correct versions.

Steps:

  1. Modify your IIS configuration to create an application.
  2. Create a database within your SQL Server environment.
  3. Modify the ‘settings.php’ bundled with the distribution.

Variable

Description

Example

$db_host

IP or DNS to the SQL Server instance.

10.1.0.152

$db_user

The username to be used to run queries on the database

“admin”

$db_pass

The password associated with the above.

 

$db_name

The database’s name

“dbEntitlement”

$db_tablename

The name of the table that will hold our credentials and authTokens.

“dbo.subscriptions”

$ldapHost

IP or DNS to the LDAP instance.

10.1.0.152

$ldapPassword

The password to access LDAP

 

$ldapPort

The Unix port to connect with.

3306

  1. Modify the ‘ldapconnector.php’ to match your LDAP implementation.
  2. Deploy the distribution, along with changes to ‘settings.php’.
  3. From a Web Browser, connect to /db/initdb.php.  This will create the table ‘$db_tablename’ on the database.  The table is created with the following columns.

Column

Description

Example

Id

Primary key/index

0

emailAddress

Username for employee

jdoe@company.com

password

SHA1 encoded password

 

authToken

Opaque token representing an active and valid user.

MD5 hash

appId

The Application ID of the application requesting entitlement.

com.adobe.myapplication

uuid

The device identifier the application is installed on.

GUID

  1. Finally, you need to associate one or more application IDs with the associated fulfillment accounts.  Within the file ‘accounts.php’, modify the associative $accounts array.  This provides a mechanism for the Entitlement Server to look up the corresponding Adobe Fulfillment account based upon a given appId.
    Example:
$accounts = array( "admin"=>"nodata" // Do not delete...used for creating tables ,"com.adobe.application1" =>"4f7fe6d766f14acb8a54edb95" ,”com.adobe.application2” =>”14acb8a54edb954f7fe6d766f” );

The first entry ‘admin’ should be left as it is used during the creation of database tables.  Add your own ‘appID, GUID’ pairs as necessary.

To look up your GUID, you can use this service.

  1. You will also need to setup/configure a URL Rewrite for the PHP files contained within the /api directory.  If you do not have this module, use the Microsoft Web Platform Installer to install the “URL Rewrite” module and dependencies.

The URL Rewrite should look similar to this.

Figure 2: URL Rewrite
Figure 2: URL Rewrite
  1. Once deployed, contact your adobe representative to have an “Integrator ID” defined for your entitlement solution.  Once Adobe deploys this, you are ready to go.

DPS application integration

At this point, the entitlement server should be up and running.  Build an application using DPS App Builder to further test the solution.

For DPS App Builder, you will need to provide the following:


Parameter Name

Description

Example

Service URL

Full URL to your entitlement server

https://www.abc.com/entitlement/api/

Service auth URL

Full URL to your entitlement server. 

https://www.abc.com/entitlement/api/

Integrator ID

The integrator ID created in step #9.

“corporate”

Optional Create Account URL

Since you are only authenticating employees and/or agents, leave this blank.

 

Optional Remote subscription page URL

Again, for corporations not selling subscriptions, leave blank.

 

Forgot Password URL

Specify the URL where users can look up or be directed to their account/password

http://www.abc.com/entitlement/forms/forgotPassword

Option existing subscription URL

Leave blank

 

Send app ID and Version

Optionally sends appID and appVersion with every service call

Checked…it must be checked!

Where to go from here

This article outlined a very basic approach to an implementation.  There are various improvements that could be made.  Here are some ideas:

  1. Migrate having AppID<->GUID from a PHP file to a SQL database.   Add a simple web form to add/modify/delete these associations.
  2. Enable Web Viewer sharing.  This implementation assumes no web sharing.  If you are going to enable the Web Viewer (i.e. sharing), you will want to enable the LDAP verification step within verifyEntitlement method.
  3. Use LDAP and Library Filters to selectively enable folios based on the group of the authenticated user (restricted distribution).

To learn more about how to extend Adobe DPS to meet your business needs, watch the video of Klaasjan Tukker's MAX 2013 session, Extending and Integrating Digital Publishing Suite.

Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License+Adobe Commercial Rights

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License. Permissions beyond the scope of this license, pertaining to the examples of code included within this work are available at Adobe.

Products

  • Adobe Creative Cloud
  • Creative Suite
  • Adobe Marketing Cloud
  • Acrobat
  • Photoshop
  • Digital Publishing Suite
  • Elements family
  • SiteCatalyst
  • For education

Download

  • Product trials
  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR

Support & Learning

  • Product help
  • Forums

Buy

  • For personal and professional use
  • For students, educators, and staff
  • For small and medium businesses
  • Volume Licensing
  • Special offers

Company

  • News room
  • Partner programs
  • Corporate social responsibility
  • Career opportunities
  • Investor Relations
  • Events
  • Legal
  • Security
  • Contact Adobe
Choose your region United States (Change)
Choose your region Close

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2013 Adobe Systems Incorporated. All rights reserved.

Terms of Use | Privacy | Cookies

Ad Choices

Reviewed by TRUSTe: site privacy statement