요구 사항

사전 지식

  • MySQL 및 PHP 이해
  • AEM Mobile 이해
  • 온디맨드 포털을 통한 콘텐츠 제작 및 게시 관련 지식

요구 제품

  • AEM Mobile

 

사용자 정의 권한 소개

Experience Manager Mobile 앱은 권한 부여 서비스를 사용하여 로그인 자격 증명을 기반으로 사용자 로그인을 지원하고 특정 컬렉션에 대한 액세스 권한을 부여할 수 있습니다.

AEM Mobile은 Direct Entitlement API v2만 지원한다는 점을 참고하십시오. AEM Mobile의 권한 부여를 참조하십시오.

소스 코드 다운로드

예제 권한 부여 서버 코드를 사용하여 작업을 시작하려면 권한 부여 서비스 파일을 다운로드하십시오.

 

참고:

아래에 첨부된 소프트웨어를 다운로드함으로써 사용자는 Adobe.com 사용 약관Adobe 온라인 개인정보 보호정책을 읽었으며 이에 동의함을 인지합니다.

참고:

예제 구현은 앞으로도 계속 제공되지만 Adobe는 코드, 구현, 배포 프로세스에 대한 지원을 중단할 예정입니다. 구현과 관련하여 문의 사항이 있는 경우 AEM Mobile 포럼을 이용하시기 바랍니다.

권한 부여 데이터베이스 설치

권한 부여 시스템이 정보를 보관하고 가져올 수 있도록 MySQL 데이터베이스에 올바른 테이블 구조가 있어야 합니다.

다음 예제에서는 phpMyAdmin을 사용하여 MySQL 데이터베이스를 관리하지만 다른 MySQL 관리 도구에서도 동일한 결과를 얻을 수 있습니다.

이미 phpMyAdmin을 서버에 설치한 경우에는 다음 섹션으로 이동하여 계속해서 새 데이터베이스를 만드는 방법에 대해 살펴보십시오.

phpMyAdmin 설치

  1. phpMyAdmin 홈페이지로 이동합니다.

  2. “x.x.x 다운로드”버튼을 클릭하여 최신 버전의 phpMyAdmin을 다운로드합니다.

  3. phpMyAdmin 설치 가이드에 따라 직접 권한 부여를 호스팅할 서버에 phpMyAdmin을 설치합니다.

  4. phpMyAdmin이 설치된 서버에서 phpMyAdmin 포털로 이동합니다. 예: http://<my-domain>/phpmyadmin

  5. 로그인하라는 메시지가 표시되면 서버에 데이터베이스 사용자 이름 및 암호를 입력합니다.

새 데이터베이스 만들기

  1. phpMyAdmin의 홈페이지에서 왼쪽 사이드바에 있는 “새로 만들기” 버튼 또는 위쪽 내비게이션 바의 “데이터베이스” 탭 중 하나를 클릭합니다.

  2. 데이터베이스 페이지의 “데이터베이스 제작” 필드에 새 데이터베이스 이름(가급적이면 “entitlement_admin”)을 입력합니다.

  3. “만들기” 버튼을 클릭하여 입력한 이름으로 새 데이터베이스를 생성합니다.

미리 정의된 데이터베이스 구조 업로드

  1. 데이터베이스를 생성한 후 목록에서 데이터베이스 “entitlement_admin”(또는 지정된 데이터베이스 이름)을 클릭합니다.

  2. “entitlement_admin” 데이터베이스 페이지에서 위쪽 내비게이션 바의 “가져오기” 탭을 클릭합니다.

  3. “파일 선택” 옵션을 클릭하여 브라우저 창을 엽니다.

  4. 브라우저 창에서 다운로드한 권한 부여 서버 폴더로 이동하고 미리 정의된 데이터베이스 파일 “entitlement_admin.sql”을 선택합니다.

  5. “이동” 버튼을 클릭하여 선택한 데이터베이스를 업로드합니다.

    업로드가 완료되면 이를 알리는 메시지가 표시됩니다.

소스 코드 구성

권한 부여 서비스가 방금 만들어진 데이터베이스와 통신할 수 있도록 소스 코드의 섹션을 업데이트해야 합니다.

MySQL 설정 업데이트

  1. 권한 부여 서버의 소스 코드 폴더로 이동합니다.

  2. 텍스트 편집기를 사용하여 “Source-Code/php/settings.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
    );

    참고:

    암호에 MD5 해시를 수행해야 합니다(예: PHP 함수 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 클라이언트를 사용하여 권한 부여 서비스를 호스팅할 웹 서버에 연결합니다.

  2. 웹 서버의 원하는 디렉터리에 업로드 대상을 설정합니다.

  3. 권한 부여 서버의 소스 코드를 폴더를 선택합니다.

  4. 권한 부여 서버의 소스 코드를 폴더 내의 모든 파일을 업로드합니다.

  5. 로그인 화면을 확인하려면 웹 서버에서 소스 코드 폴더의 경로로 이동합니다.

권한 부여 서버 설정 테스트

권한 부여 서비스의 설정을 테스트할 수 있는 하나의 테스트 세트가 제공됩니다. 호스팅 서버에서 setup_check.html로 이동하십시오. 왼쪽 사이드 바의 버튼 중 하나를 클릭하여 해당 테스트를 수행합니다. 각 검사가 성공한 경우 “OK”가, 성공하지 못한 경우에는 오류 메시지가 반환됩니다.

여기에는 다음과 같은 테스트가 포함됩니다.

  • 모두 – 아래의 검사를 전부 수행합니다.
  • PHP 모듈 – 직접 권한 부여 소스 코드 사용에 필요한 PHP 모듈이 설치되어 있는지 확인합니다.
  • 구성 – 사용자가 settings.php 파일을 업데이트했는지 확인합니다. 기본적으로 값은 주석으로 처리되므로 사용자가 직접 실제 값을 입력해야 합니다.
  • 데이터베이스 – 직접 권한 부여 데이터베이스가 성공적으로 생성되었는지 확인합니다. 제공된 자격 증명(settings.php에서)을 사용하여 직접 권한 부여 데이터베이스에 액세스할 수 있는지 확인합니다.
  • HTTP 연결 – 호스팅 서버가 HTTP(보안되지 않은) 웹 사이트에 액세스할 수 있는지 확인합니다.
  • HTTPS 연결 – 호스팅 서버가 HTTPS(암호화된) 웹 사이트에 액세스할 수 있는지 확인합니다.

권한 부여 서비스 사용자 정의

이 섹션은 각자의 브랜드에 맞게 권한 부여 서비스를 조정하는 데 도움을 줄 수 있습니다. 모든 이미지는 권한 부여 서버의 소스 코드 폴더 내의 “이미지” 폴더에 저장해야 합니다.

로그인 화면의 배경 사용자 정의

  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 앱의 권한 부여를 참조하십시오.

번들 ID 지정

AEM Mobile 앱용 번들 ID를 입력합니다. 온디맨드 서비스에서 다음 위치 중 하나에 설정되어 있는 번들 ID와 일치해야 합니다.

프로젝트 설정

프로젝트 설정 > 액세스 탭 > 번들 ID로 이동합니다. 여기에 번들 ID가 지정되면 앱에 있는 번들 ID 값 대신 이 번들 ID가 권한 부여 서비스로 전송됩니다.

앱 설정

왼쪽 레일에 있는 앱 메뉴로 이동하여 앱을 만들거나 편집합니다. 번들 ID가 프로젝트 설정에 지정되지 않은 경우 이 번들 ID가 사용됩니다.

사용자 관리

권한 부여 관리자를 사용하여 사용자를 만들고 업데이트할 수 있습니다. 사용자는 사용자 이름 및 암호가 있어야 하며 선택적 설명 필드를 포함해야 합니다. 사용자는 하나 이상의 제품에 대해 권한이 부여될 수 있으며 하나 이상의 그룹에 할당될 수 있습니다.

  • 사용자를 추가하려면 “사용자 탭”에서 “사용자 추가”를 클릭합니다.
  • 사용자를 편집하려면 그리드에서 사용자를 선택한 다음 “사용자 편집”을 클릭하거나 사용자 항목을 더블 클릭합니다. 사용자 편집 대화 상자에서 사용자 이름, 암호, 설명 등을 업데이트할 수 있습니다. 업데이트하는 경우에만 암호를 설정할 필요가 있으며 그렇지 않으면 암호를 비워 둘 수 있습니다.
  • 사용자에 제품을 권한 부여하려면 첫 번째 드롭다운에서 제품을 선택하고 “+” 버튼을 클릭합니다.
  • 그룹에 사용자를 추가하려면 두 번째 드롭다운에서 그룹을 선택하고 “+” 버튼을 클릭합니다.
  • 사용자에서 제품 또는 그룹을 제거하려면 목록에서 이를 선택하고 “제거”를 클릭합니다.

그룹 관리

권한 부여 관리자를 사용하여 그룹을 만들고 업데이트할 수 있습니다. 그룹은 필수가 아니지만 사용자의 그룹에 하나 이상의 제품에 대한 권한을 부여하는 데 유용합니다. 그룹에는 이름이 있어야 하며 선택적 설명 필드를 포함해야 합니다. 그룹에 제품 권한을 부여하고 사용자를 그룹에 할당할 수 있습니다.

  • 그룹을 추가하려면 “그룹” 탭에서 “그룹 추가”를 클릭합니다.
  • 그룹을 편집하려면 그리드에서 그룹을 선택한 다음 “그룹 편집”을 클릭하거나 더블 클릭합니다. 그룹 편집 대화 상자에서 이름 또는 설명 등을 업데이트할 수 있습니다.
  • 그룹에 제품을 권한 부여하려면 첫 번째 드롭다운에서 제품을 선택하고 “+” 버튼을 클릭합니다.
  • 그룹에 사용자를 추가하려면 두 번째 드롭다운에서 사용자를 선택하고 “+” 버튼을 클릭합니다.
  • 그룹에서 제품 또는 사용자를 제거하려면 목록에서 이를 선택하고 “제거”를 클릭합니다.

제품 관리

권한 부여 관리자를 사용하여 제품을 만들고 업데이트할 수 있습니다. 제품은 제품 라벨, 제품 설명, 제품 ID 및 가용 일자가 있어야 합니다. 제품을 만들 때 제품 ID가 온디맨드 포털의 제품 및 구독 섹션에 만든 제품 ID와 일치하는지 확인하십시오. 자세한 내용은 AEM Mobile용 인앱 구매 및 구독을 참조하십시오.

  • 제품을 추가하려면 “제품” 탭에서 “제품 추가”를 클릭합니다.
  • 제품을 편집하려면 그리드에서 제품을 선택한 다음 “제품 편집”을 클릭하거나 더블 클릭합니다. 제품 편집 대화 상자에서 제품 라벨, 제품 설명, 제품 ID 또는 가용 일자를 업데이트할 수 있습니다.
  • 제품에 그룹을 권한 부여하려면 첫 번째 드롭다운에서 그룹을 선택하고 “+” 버튼을 클릭합니다.
  • 사용자에게 제품에 대한 권한을 부여하려면 두 번째 드롭다운에서 사용자를 선택하고 “+” 버튼을 클릭합니다.
  • 제품에서 그룹 또는 사용자를 제거하려면 목록에서 이를 선택하고 “제거”를 클릭합니다.  

AEM Mobile 프로젝트용 권한 부여 서버 활성화

AEM Mobile 프로젝트용 권한 부여 서버를 연결하려면 다음을 수행해야 합니다.

  1. 권한 부여 서버에 번들 ID를 입력합니다. 온디맨드 서비스에 설정된 번들 ID와 일치해야 합니다.

    온디맨드 서비스 프로젝트 메타데이터에서 확인할 수 있습니다.

    또는 AEM Mobile 앱 설정에서 확인할 수 있습니다(프로젝트 수준에 설정하지 않은 경우).

  2. 온디맨드 서비스에 권한 부여 끝점을 입력합니다. 자세한 내용은 AEM Mobile 앱의 권한 부여를 참조하시기 바랍니다.

제작 개선 사항

현재 설정에서 관리 사용자 자격 증명은 /php/settings.php 파일에 설정되어 있습니다. 관리 사용자를 만드는 이 프로세스를 최적화하기 위해서는 데이터베이스에 $admin_list를 저장하고 생성/편집/삭제/업데이트하기 위한 MySQL 관리 도구(phpMyAdmin 등)를 사용하는 것이 가장 좋습니다.

  1. 데이터베이스에 새 테이블(예: 관리자)을 만들고, 이전에 생성된 동일한 데이터베이스(기본 설정)를 사용할 수 있으며 필요한 만큼 많은 관리 사용자를 만들 수 있습니다.

  2. /php/settings.php 파일에서 $admin_list = array()를 관리 사용자 목록에 대한 데이터베이스를 쿼리할 MySQL 준비 명령문으로 교체해야 합니다. 아래는 예제입니다.

    // 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 또는 일반 ID 공급자를 사용하는 것을 지원합니다. 즉, 사용자는 Google 또는 Facebook 계정을 사용하거나 사용자 정의 로그인을 통해 내 디자인 환경에 로그인할 수 있습니다. 기본적으로 권한 부여 서비스는 동시에 모든 세 가지 유형의 ID 공급자를 지원하지 않습니다.

사용자 정의 인증에 대한 자세한 내용은 AEM Mobile 앱의 사용자 정의 인증을 참조하십시오.

ID 공급자로 Google 또는 Facebook 사용

ID 공급자로 Google 또는 Facebook 사용하는 경우 AEM Mobile 앱은 Entitlement V2 API: /entitlements에서 authToken을 제공하게 됩니다. 권한 부여 서버의 구성에 따라 이 예시 권한 부여 서버는 Google 또는 Facebook API를 사용하여 authToken을 기반으로 사용자 이메일을 가져오고 권한 부여 데이터베이스를 통해 확인합니다.

서버를 구성하려면 매개 변수 $identity_provider를 “google” 또는 “facebook”으로 업데이트하십시오. 이 매개 변수는 /php/settings.php에서 찾을 수 있습니다.

일반 ID 공급자 사용

일반 ID 공급자를 사용하는 경우 앱은 입력된 사용자 정의 로그인 UI로 사용자를 리디렉션합니다. 이 UI는 로그인 자격 증명을 처리하고, 확인하고, 결과를 앱으로 반환할 수 있어야 합니다.

/idp 디렉터리에 로그인 UI의 샘플이 설정되어 있습니다. 온디맨드 서비스에서 일반 ID 공급자를 설정할 때 인증 URL은 다음과 같아야 합니다.
http://<도메인>/<소스 코드에 대한 경로>/idp/index.html

이전에 Google 또는 Facebook을 사용하도록 서버를 구성해 놓은 경우에는 매개 변수 $identity_provider를 다시 “default”로 업데이트해 주십시오. 이 매개 변수는 /php/settings.php에서 찾을 수 있습니다.

ID 공급자를 지원하도록 서비스 구성

각각의 앱은 Google, Facebook 또는 일반 중 하나의 ID 공급자만 지원합니다. 기본적으로 이 예시 권한 부여 서버도 하나만 지원합니다. 그러나 여러 앱에 대해 동일한 권한 부여 서버를 사용하는 등 여러 ID 공급자를 지원해야 할 필요가 있는 경우에는 /services 디렉터리를 복사하고 이를 services-google 등 다른 이름으로 변경하십시오. 새로 복사한 디렉터리에서 매개 변수 $identity_provider를 줄 번호 13 뒤에 원하는 ID 공급자를 추가(예: $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://<도메인>/<소스 코드에 대한 경로>/services-google/index.php

이 작업에는 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License의 라이센스가 부여되었습니다.  Twitter™ 및 Facebook 게시물은 Creative Commons 약관을 적용받지 않습니다.

법적 고지 사항   |   온라인 개인 정보 보호 정책