외부 사용자 초대 핸들러 구현 정의
다음 외부 사용자 초대 핸들러 구현은 관리 콘솔을 통해 액세스할 수 있는 초대된 사용자 추가 페이지에서 제출된 이메일 주소를 수락합니다.
package com.adobe.livecycle.samples.inviteexternalusers.provider;
import com.adobe.edc.server.spi.ersp.*;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.um.api.*;
import com.adobe.idp.um.api.infomodel.*;
import com.adobe.idp.um.api.impl.UMBaseLibrary;
import com.adobe.livecycle.usermanager.client.DirectoryManagerServiceClient;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class InviteExternalUsersSample implements InvitedUserProvider
{
private ServiceClientFactory _factory = null;
private User createLocalPrincipalAccount(String email_address) throws Exception
{
String ret = null;
// Assume the local domain already exists!
String domain = "EDC_EXTERNAL_REGISTERED";
List aliases = new ArrayList();
aliases.add( email_address );
User local_user = UMBaseLibrary.createUser( email_address, domain, email_address );
local_user.setCommonName( email_address );
local_user.setEmail( email_address );
local_user.setEmailAliases( aliases );
// You may wish to disable the local user until, for example, his registration is processed by a confirmation link
//local_user.setDisabled( true );
DirectoryManager directory_manager = new DirectoryManagerServiceClient( _factory );
String ret_oid = directory_manager.createLocalUser( local_user, null );
if( ret_oid == null )
{
throw new Exception( "FAILED TO CREATE PRINCIPAL FOR EMAIL ADDRESS: " + email_address );
}
return local_user;
}
protected User[] createUsers( List emails ) throws Exception
{
ArrayList ret_users = new ArrayList();
_factory = ServiceClientFactory.createInstance();
Iterator iter = emails.iterator();
while( iter.hasNext() )
{
String current_email = (String)iter.next();
ret_users.add( createLocalPrincipalAccount( current_email ) );
}
return (User[])ret_users.toArray( new User[0] );
}
protected void doInvitations(List emails)
{
// Here you may choose to send the users who were created an invitation email
// This step is completely optional, depending on your requirements.
}
public InvitedUserProviderResult[] invitedUser(List emails)
{
// This sample demonstrates the workflow for inviting a user via email
try
{
User[] principals = createUsers(emails);
InvitedUserProviderResult[] result = new InvitedUserProviderResult[principals.length];
for( int i = 0; i < principals.length; i++ )
{
result[i] = new InvitedUserProviderResult();
result[i].setEmail( (String)emails.get( i ) );
result[i].setUser( principals[i] );
}
doInvitations(emails);
System.out.println( "SUCCESSFULLY INVITED " + result.length + " USERS" );
return result;
}
catch( Exception e )
{
System.out.println( "FAILED TO INVITE USERS FOR INVITE USERS SAMPLE" );
e.printStackTrace();
return new InvitedUserProviderResult[0];
}
}
}
권한 부여 처리기의 구성 요소 XML 파일 정의
구성 요소 XML 파일을 정의하여 외부 사용자 초대 처리기 구성 요소를 배포합니다. 구성 요소 XML 파일은 각 구성 요소에 대해 존재하며 구성 요소에 대한 메타데이터를 제공합니다.
다음 component.xml
파일은 외부 사용자 초대 처리기에 사용됩니다. 서비스 이름이 InviteExternalUsersSample
이고 이 서비스가 표시하는 작업의 이름은 invitedUser
입니다. 입력 매개 변수는 java.util.List
인스턴스이고 출력 값은 com.adobe.edc.server.spi.esrp.InvitedUserProviderResult
인스턴스의 배열입니다.
외부 사용자 초대 핸들러에 대한 구성 요소 XML 파일 정의
<component xmlns="https://adobe.com/idp/dsc/component/document">
<component-id>com.adobe.livecycle.samples.inviteexternalusers</component-id>
<version>1.0</version>
<bootstrap-class>com.adobe.livecycle.samples.inviteexternalusers.provider.BootstrapImpl</bootstrap-class>
<descriptor-class>com.adobe.idp.dsc.component.impl.DefaultPOJODescriptorImpl</descriptor-class>
<services>
<service name="InviteExternalUsersSample">
<specifications>
<specification spec-id="com.adobe.edc.server.spi.ersp.InvitedUserProvider"/>
</specifications>
<specification-version>1.0</specification-version>
<implementation-class>com.adobe.livecycle.samples.inviteexternalusers.provider.InviteExternalUsersSample</implementation-class>
<auto-deploy category-id="Samples" service-id="InviteExternalUsersSample" major-version="1" minor-version="0"/>
<operations>
<operation name="invitedUser">
<input-parameter name="input" type="java.util.List" required="true"/>
<output-parameter name="result" type="com.adobe.edc.server.spi.esrp.InvitedUserProviderResult[]"/>
</operation>
</operations>
</service>
</services>
</component>
외부 사용자 초대 핸들러 패키징
AEM Forms에 외부 사용자 초대 핸들러를 배포하려면 Java 프로젝트를 JAR 파일로 패키징해야 합니다. 외부 사용자 초대 처리기의 비즈니스 논리가 종속된 외부 JAR 파일(예: edc-server-spi.jar
및 adobe-rightsmanagement-client.jar
파일)도 JAR 파일에 포함되어 있는지 확인하십시오. 구성 요소 XML 파일도 있어야 합니다. component.xml
파일 및 외부 JAR 파일이 JAR 파일의 루트에 있어야 합니다.
BootstrapImpl
클래스가 표시됩니다. 이 단원에서는 BootstrapImpl
클래스를 만드는 방법에 대해 설명하지 않습니다.다음 그림은 외부 사용자 초대 핸들러의 JAR 파일에 패키지된 Java 프로젝트의 콘텐츠를 보여줍니다.
A. 구성 요소 B. JAVA 파일에 필요한 외부 JAR 파일
외부 사용자 초대 핸들러를 JAR 파일로 패키징합니다. 이전 다이어그램에서는 .JAVA 파일이 나열되어 있습니다. JAR 파일에 패키지된 후에는 해당 .CLASS 파일도 지정해야 합니다. .CLASS 파일이 없으면 권한 부여 처리기가 작동하지 않습니다.
외부 사용자 초대 핸들러 테스트
외부 사용자 초대 핸들러를 테스트하려면 관리 콘솔을 사용하여 초대할 외부 사용자를 추가할 수 있습니다.
관리 콘솔을 사용하여 초대할 외부 사용자를 추가하려면 다음 작업을 수행하십시오.
-
Workbench를 사용하여 외부 사용자 초대 핸들러의 JAR 파일을 배포합니다.
-
응용 프로그램 서버를 다시 시작합니다.
NOTE
SDK를 다시 시작하려면 'Ctrl + C' 명령을 사용하는 것이 좋습니다. Java 프로세스 중지와 같은 대체 방법을 사용하여 AEM SDK를 다시 시작하면 AEM 개발 환경이 일치하지 않을 수 있습니다. -
관리 콘솔에 로그인합니다.
-
서비스 > Rights Management > 구성 > 초대됨 사용자 등록 을 클릭합니다.
-
초대된 사용자 등록 활성화 상자를 선택하여 초대된 사용자 등록을 활성화합니다. 기본 제공 등록 시스템 사용 에서 아니요 를 클릭합니다. 설정을 저장합니다.
-
관리 콘솔 홈 페이지에서 설정 > 사용자 관리 > 도메인 관리 를 클릭합니다.
-
새 로컬 도메인 을 클릭합니다. 다음 페이지에서 이름 및 식별자 값이
EDC_EXTERNAL_REGISTERED
인 도메인을 만듭니다. 변경 사항을 저장합니다. -
관리 콘솔 홈 페이지에서 서비스 > Rights Management > 초대됨 및 로컬 사용자 를 클릭합니다. 초대된 사용자 추가 페이지가 나타납니다.
-
이메일 주소를 입력합니다(현재 외부 사용자 초대 핸들러가 실제로 이메일 메시지를 보내지 않으므로 이메일 주소가 유효하지 않아도 됨). 확인 을 클릭합니다. 사용자가 시스템에 초대됩니다.
-
관리 콘솔 홈 페이지에서 설정 > 사용자 관리 > 사용자 및 그룹 을 클릭합니다.
-
찾기 필드에 지정한 전자 메일 주소를 입력합니다. 찾기 를 클릭합니다. 초대한 사용자가 로컬
EDC_EXTERNAL_REGISTERED
도메인에 사용자로 나타납니다.