要求

必备知识

  • 了解 MySQL 和 PHP
  • 了解 AEM Mobile
  • 有关通过点播门户创建和发布内容的知识

必要的产品

  • AEM Mobile

 

自定义授权简介

通过使用授权服务,Experience Manager Mobile 应用程序可支持用户登录,并对基于登录凭据的某些集合授予访问权限(授权)。

请注意,AEM Mobile 仅支持 Direct Entitlement API v2。请参阅 AEM Mobile 中的授权

下载源代码

要开始使用示例授权服务器代码,请下载授权服务文件。

 

注意:

下载下列软件,即表示我承认我已阅读并同意 Adobe.com 使用条款Adobe Online 隐私政策的条款。

注意:

示例实施将按原样提供,Adobe 不会为代码、实施或部署过程提供支持。如果您有关于实施的问题,请使用 AEM Mobile 论坛

安装授权数据库

MySQL 数据库必须具有正确的表结构,使授权系统可以在其中存储和检索信息。

请注意,以下示例使用了 phpMyAdmin 来管理 MySQL 数据库,其他 MySQL 管理工具也可获得相同的结果。

如果您已在服务器上安装了 phpMyAdmin,请继续转至有关创建新数据库的下一部分。

安装 phpMyAdmin

  1. 导航到 phpMyAdmin 主页

  2. 单击“Download x.x.x”按钮下载 phpMyAdmin 的最新版本。

  3. 遵循 phpMyAdmin 安装指南,在托管直接授权的服务器中安装 phpMyAdmin。

  4. 从已安装 phpMyAdmin 的服务器导航至 phpMyAdmin 门户。示例:http://<my-domain>/phpmyadmin

  5. 如果提示需要登录,向服务器输入数据库用户名和密码。

创建新数据库

  1. 在 phpMyAdmin 主页上,单击位于左侧边栏的“New”按钮或位于顶部导航栏的“Database”选项卡。

  2. 在数据库页面中,在“Create database”字段中输入一个新数据库名称(首选“entitlement_admin”)。

  3. 单击“Create”按钮,生成一个带有输入名称的新数据库。

上传预定义的数据库结构

  1. 成功创建数据库后,在列表中单击数据库“entitlement_admin”(或指定的数据库名称)。

  2. 在“entitlement_admin”数据库页面中,单击顶部导航栏上的“Import”选项卡。

  3. 单击“Choose File”选项,打开浏览器窗口。

  4. 在浏览器窗口中,导航至下载的授权服务器文件夹,并选择名为“entitlement_admin.sql”的预定义数据库文件。

  5. 单击“Go”按钮,上传选中的数据库。

    上传成功时,将显示通知消息。

配置源代码

您需要更新源代码的一部分,以使授权服务与您刚创建的数据库进行通信。

更新 MySQL 设置

  1. 导航至授权服务器的源代码文件夹。

  2. 使用文本编辑器打开“settings.php”文件,该文件位于下列目录中:“Source Code/php/settings.php”。

  3. 更新以下参数的值:

    // enter the MySQL host name
    $db_host = 'localhost';
    // enter the MySQL database username
    $db_user = 'root';
    // enter the MySQL database password
    $db_password = 'root';
    // enter the name of the MySQL database
    $db_name = 'entitlement_admin';
  4. 更新预定义管理用户列表的参数 $admin_list。该列表为在自定义授权服务器示例托管后能够访问该服务器示例的管理用户列表。

     

    每一个管理用户都与一个 AEM Mobile 应用程序相绑定。如果您有两个 iOS 应用程序,您必须创建两个管理用户。

    此列表包含下列格式:

    $admin_list = array(
        // admin user #1
        array(
            'username' => 'admin1',
            'password' => '202cb962ac59075b964b07152d234b70'
        ),
        // admin user #2
        array(
            'username' => 'admin2',
            'password' => '202cb962ac59075b964b07152d234b70'
        ),
        // add as many admin users as necessary
    );

    注意:

    您需要对密码(即 PHP function md5())进行 MD5 哈希运算。在上例中,示例密码“202cb962ac59075b964b07152d234b70”即为值“123”的 MD5 哈希值。

    <?php
    
    // this will output 202cb962ac59075b964b07152d234b70
    // replace the value '123' below with the desired password for the admin
    echo md5('123');
    
    ?>

托管源代码

将具有更新设置的授权服务源代码上传至已在上一步中设置好数据库的托管服务器。

  1. 使用 Transmit 等 FTP 客户端来连接将要托管您的授权服务的 Web 服务器。

  2. 将上传目标设置为期望的 Web 服务器目录。

  3. 选择授权服务器的源代码文件夹。

  4. 上传授权服务器源代码文件夹内的所有文件。

  5. 导航至 Web 服务器中的源代码文件夹的路径,可看到登录屏幕。

测试授权服务器设置

已提供一组测试以测试授权服务的设置。请导航至托管服务器中的 setup_check.html。单击左侧边栏中的任一按钮执行相应的测试。如检查成功则将返回“ok”,如果不成功则将返回错误消息。

这包括以下测试:

  • 全部 – 这将执行以下所有测试。
  • PHP 模块 – 检查是否已安装了直接授权源代码所使用的、必需的 PHP 模块。
  • 配置 – 检查用户是否已更新 settings.php 文件。默认情况下,这些值已被注释,所以用户必须提供其实际值。
  • 数据库 – 检查是否已成功创建直接授权数据库。检查是否可以使用所提供的凭据(在 settings.php 中)访问直接授权数据库。
  • HTTP 连接 – 检查托管服务器是否可以访问 HTTP(非安全)网站。
  • HTTPS 连接 – 检查托管服务器是否可以访问 HTTPS(加密)网站。

自定义您的授权服务

本节将帮助您根据您自己的品牌定制授权服务。所有图像都应放在授权服务器源代码文件夹中的“images”文件夹中。

自定义登录屏幕的背景

  1. 使用以下尺寸创建一幅图像:1200x1200 像素。
  2. 将图像另存为“login_bg.jpg”。

自定义登录屏幕的徽标

  1. 使用以下尺寸创建一幅图像:34x33 像素。
  2. 将图像另存为“aemmobile_logo.png”。

自定义主页横幅

  1. 使用以下尺寸创建一幅图像:1200x170 像素。
  2. 将图像另存为“header.jpg”。

自定义登录页面中的文本

  1. 导航至直接授权服务器的源代码文件夹。
  2. 使用文本编辑器打开“index.html”文件。
  3. 编辑下列值:

登录标题

  • 找到以下内容:“Adobe Experience Manager Mobile”(第 31 行)。
  • 将该值更改为您自己的登录标题。

用户名占位符

  • 找到以下内容:“Sign in with your Adobe ID for AEM Mobile”(第 40 行)
  • 将该值更改为您自己的用户名占位符。

密码占位符

  • 找到以下内容:“Password”(第 48 行)
  • 将该值更改为您自己的密码占位符。

访问授权服务

如果登录时管理员尚不存在,授权服务将自动创建管理员。登录后,屏幕将显示将用户和组授权为集合。有关授权的工作原理的更多信息,请参阅此文章:AEM Mobile 应用程序中的授权

指定 Bundle ID

输入 AEM Mobile 应用程序的 Bundle ID。这应该与点播服务中下列位置之一的设置相匹配:

项目设置

转至“Project Settings”>“Access”选项卡 > Bundle ID。如果此处指定了 Bundle ID,则会将此 Bundle ID(而非应用程序中的 Bundle ID 值)发送至授权服务。

应用程序设置

转到左边栏中的“Apps”并创建或编辑应用程序。如果项目设置中没有指定 Bundle ID,则使用此 Bundle ID。

管理用户

使用授权管理员,您可以创建并更新用户。用户必须具有用户名和密码,并包含一个可选的说明字段。一名用户可获得一个或多个产品授权,也可被分配至一个或多个组。

  • 如需添加用户,请在“Users”选项卡中单击“Add User”。
  • 如需编辑用户,请在网格中选择一个用户,然后单击“Edit User”或者双击用户条目。在“Edit User”对话框中,您可以更新用户名、密码和说明。只有当您更新密码是才需要设置密码;否则,可以将其留为空白。
  • 如需将产品授权至用户,请从第一个下拉列表中选择一个产品单击“+”按钮。
  • 如需将用户添加到组中,请从第二个下拉列表中选择一个组并单击“+”按钮。
  • 如需从用户中删除产品或组,请在列表中选择它,然后单击“Remove”。

管理群组

使用授权管理员,您可以创建和更新组。组不是必需的,但可用于向用户组授权一个或多个产品。组必须具有一个名称并包含一个可选的“Description”字段。您可以将产品授权至组,并向组分配用户。

  • 如需添加一个组,请在“Groups”选项卡中单击“Add Group”。
  • 如需编辑组,请在网格中选择一个组,然后单击“Edit Group”或者双击。在“Edit Group”对话框中,您可以更新名称或说明。
  • 如需将产品授权至组,请从第一个下拉列表中选择一个产品单击“+”按钮。
  • 如需将用户添加到组中,请从第二个下拉列表中选择一名用户并单击“+”按钮。
  • 如需从组中删除产品或用户,请在列表中选择它,然后单击“Remove”。

管理产品

使用授权管理员,您可以创建和更新产品。产品必须有产品标签、产品说明、产品 ID 和发布日期。在创建产品时,请确保产品 ID 与在点播门户的“Products & Subscriptions”部分创建的 ID 相匹配。有关更多信息,请参阅此文章:AEM Mobile 的应用程序内购买和订阅

  • 如需添加产品,请单击“Product”选项卡中的“Add Product”。
  • 如需编辑产品,请选择网格中的产品,然后单击“Edit Product”或双击。在“Edit Product”对话框中,您可以更新产品标签、产品说明、产品 ID 或发布日期。
  • 如需将产品授权至组,请在第一个下拉列表中选择一个组并单击“+”按钮。
  • 如需将产品授权至用户,请从第二个下拉列表中选择一名用户并单击“+”按钮。
  • 如需从产品中删除一个组或用户,请在列表中选择它,然后单击“Remove”。 

激活 AEM Mobile 项目的授权服务器

如需将授权服务器与 AEM Mobile 项目关联,您需要执行以下操作:

  1. 将 Bundle ID 输入至授权服务器中。这必须与点播服务中设置的 ID 相同。

    这可以在点播服务项目元数据中找到:

    或者在 AEM Mobile 应用程序设置中找到(如果未在项目级别设置)。

  2. 在点播服务中输入授权端点。有关更多信息,请参阅此帮助文章:AEM Mobile 应用程序中的授权

生产改进

管理用户凭据已使用当前设置在 /php/settings.php 文件中设置完毕。如需优化此创建管理用户的过程,最好将 $admin_list 存储在数据库中并使用 MySQL 管理工具(如 phpMyAdmin)来对它们进行创建/编辑/更新/删除。

  1. 在数据库中创建一个新表格(即管理员),您可以使用于之前创建的相同的数据库(首选),并根据需要创建任意多个管理用户。

  2. 在 /php/settings.php 文件中,您将需要使用 MySQL 编报表替换 $admin_list = array(),该编报表将向数据库查询管理用户的列表。下面为一个示例:

    // initializes the empty list of admin user
    $admin_list = array();
    
    // connects to the database
    $dbconnect = $mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);
    
    if ($dbconnect) { // successfully connected to the database
    	// queries the database for the list of admin user credentials: username, password
    	$stmt = $mysqli->prepare('SELECT username, password FROM admins);
    
    	if ($stmt) { // prepare statement succeeded
    		$stmt->bind_param('ss', $username, $password);
    		$stmt->execute();
    		// stores the queried results
    		$stmt->store_result();
    
    		if ($stmt->num_rows > 0) { // there exists admin users in the database
    			// appends the queried admin credentials to the list
    			while($stmt->fetch()) {
    				$admin_list[] = array(
    					'username' => $username,
    					'password' => $password
    				);
    			}
    		}
    	}
    }
    

在授权服务中使用自定义身份验证

本示例授权服务器现在支持使用 Google、Facebook 或通用标识提供者。这样,用户便能使用 Google 或 Facebook 帐户进行登录,或使用您设计的自定义登录体验。默认情况下,授权服务不能同时支持所有这三种类型的标识提供者。

有关自定义身份验证的更多信息,请参阅 AEM Mobile 应用程序中的自定义身份验证

使用 Google 或 Facebook 作为标识提供者

当使用 Google 或 Facebook 作为标识提供者时,AEM Mobile 应用程序将在 Entitlement V2 API: /entitlements 中提供 authToken 。根据授权服务器配置,本示例授权服务器将使用 Google 或 Facebook API 根据 authToken 拉取用户电子邮件,并将检查授权数据库。

要配置服务器,请将参数 $identity_provider 更新为“google”或“facebook”。此参数可以在 /php/settings.php 中找到。

使用通用标识提供者

当使用通用标识提供者时,应用程序会将用户重定向到所提供的自定义登录 UI。该 UI 必须处理登录凭据,验证该凭据,然后将结果返回到应用程序。

示例登录 UI 已在 /idp 目录中设置。当在点播服务中设置通用标识提供者时,身份验证 URL 应采用以下形式:
http://<域>/<源代码路径>/idp/index.html

如果您之前已将服务器配置为使用 Google 或 Facebook,请将参数 $identity_provider 更新回“默认值”。此参数可以在 /php/settings.php 中找到。

配置服务以支持标识提供者

每个应用程序仅支持一个标识提供者:Google 或 Facebook 或通用标识提供者。默认情况下,本示例授权服务器也仅支持一个标识提供者。但是,如果您有理由需要支持多个身份提供者(例如对多个应用程序使用相同的授权服务器),则需要复制 /services 目录,然后将其重命名为其他名称(如 services-google)。在最新复制的目录中,通过在行 # 13 后添加参数 $identity_provider 来将其强制设置为所需的标识提供者(示例:$identity_provider = "google")。

// in /services-google/index.php

require_once "../php/settings.php";
require_once "../php/utils.php";

$identity_provider = "google"

$path_info = $_SERVER["PATH_INFO"];
$call = substr($path_info, 1);

在本示例中,新授权端点将如下所示:
http://<domain>/<path-to-source-code>/services-google/index.php

本产品经 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 许可  Twitter™ 与 Facebook 中的内容不在 Creative Commons 的条款约束之下。

法律声明   |   在线隐私策略