Esempi ed esempi in questo documento sono solo per AEM Forms in ambiente JEE.
Puoi creare un handler per l’invito di utenti esterni per il servizio di Rights Management. Un handler per l’invito di utenti esterni consente al servizio di Rights Management di invitare utenti esterni a diventare utenti del Rights Management. Quando un utente diventa un utente di Rights Management, può eseguire attività quali l'apertura di un documento PDF protetto da policy. Dopo aver implementato in AEM Forms l’handler per l’invito di utenti esterni, puoi utilizzare la console di amministrazione per interagire con esso.
Un handler per l’invito di utenti esterni è un componente AEM Forms. Prima di creare un handler per l’invito di utenti esterni, è consigliabile acquisire familiarità con la creazione dei componenti.
Riepilogo dei passaggi
Per sviluppare un handler per l’invito di utenti esterni, esegui i seguenti passaggi:
Per configurare l’ambiente di sviluppo, devi creare un nuovo progetto Java, ad esempio un progetto Eclipse. La versione di Eclipse supportata è 3.2.1
o successiva.
Il Rights Management SPI richiede che il file edc-server-spi.jar
sia impostato nel percorso di classe del progetto. Se non si fa riferimento a questo file JAR, non è possibile utilizzare il Rights Management SPI nel progetto Java. Questo file JAR viene installato con AEM Forms SDK nella cartella [install directory]\Adobe\Adobe_Experience_Manager_forms\sdk\spi
.
Oltre ad aggiungere il file edc-server-spi.jar
al percorso della classe del progetto, devi anche aggiungere i file JAR necessari per utilizzare l’API del servizio Rights Management. Questi file sono necessari per utilizzare l’API del servizio di Rights Management all’interno del gestore di invito di utenti esterni.
Per sviluppare un gestore di utenti esterni per l’invito, è necessario creare una classe Java che implementi l’interfaccia com.adobe.edc.server.spi.ersp.InvitedUserProvider
. Questa classe contiene un metodo denominato invitedUser
, che il servizio di Rights Management richiama quando gli indirizzi e-mail vengono inviati utilizzando la pagina Aggiungi utenti invitati accessibile tramite la console di amministrazione.
Il metodo invitedUser
accetta un'istanza java.util.List
che contiene indirizzi e-mail digitati in stringa inviati dalla pagina Aggiungi utenti invitati. Il metodo invitedUser
restituisce una matrice di oggetti InvitedUserProviderResult
, che in genere è una mappatura degli indirizzi e-mail agli oggetti Utente (non restituisce null).
Oltre a dimostrare come creare un gestore di utenti esterni per gli inviti, questa sezione utilizza anche l’API di AEM Forms.
L'implementazione del gestore di utenti esterni per l'invito contiene un metodo definito dall'utente denominato createLocalPrincipalAccount
. Questo metodo accetta un valore stringa che specifica un indirizzo e-mail come valore di parametro. Il metodo createLocalPrincipalAccount
presuppone la preesistenza di un dominio locale denominato EDC_EXTERNAL_REGISTERED
. Puoi configurare questo nome di dominio in modo che sia tutto ciò che desideri; tuttavia, per un'applicazione di produzione, è possibile integrare con un dominio enterprise.
Il metodo createUsers
esegue iterazioni su ogni indirizzo e-mail e crea un oggetto utente corrispondente (un utente locale nel dominio EDC_EXTERNAL_REGISTERED
). Infine, viene chiamato il metodo doEmails
. Questo metodo viene lasciato intenzionalmente come una stub nel campione. In un’implementazione di produzione, conterrebbe la logica dell’applicazione per inviare messaggi e-mail di invito agli utenti appena creati. Viene lasciato nell’esempio per dimostrare il flusso logico dell’applicazione di un’applicazione reale.
L’implementazione del gestore di utenti esterni dell’invito seguente accetta gli indirizzi e-mail inviati dalla pagina Aggiungi utenti invitati accessibile tramite la console di amministrazione.
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];
}
}
}
Questa classe Java viene salvata come file JAVA denominato InviteExternalUsersSample.java.
È necessario definire un file XML del componente per distribuire il componente handler degli utenti esterni invitati. Esiste un file XML componente per ciascun componente e fornisce metadati sul componente.
Il seguente file component.xml
viene utilizzato per il gestore di utenti esterni dell’invito. Il nome del servizio è InviteExternalUsersSample
e l'operazione esposta dal servizio è denominata invitedUser
. Il parametro di input è un'istanza java.util.List
e il valore di output è una matrice di istanze com.adobe.edc.server.spi.esrp.InvitedUserProviderResult
.
<component xmlns="http://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>
Per distribuire il gestore di utenti esterni per l’invito in AEM Forms, devi creare un pacchetto del progetto Java in un file JAR. È necessario assicurarsi che i file JAR esterni da cui dipende la logica di business dell’handler degli utenti esterni invitati, come i file edc-server-spi.jar
e adobe-rightsmanagement-client.jar
, siano inclusi anche nel file JAR. Anche il file XML del componente deve essere presente. Il file component.xml
e i file JAR esterni devono trovarsi nella directory principale del file JAR.
Nell’illustrazione seguente, viene visualizzata una classe BootstrapImpl
. Questa sezione non illustra come creare una classe BootstrapImpl
.
L’illustrazione seguente mostra il contenuto del progetto Java incluso nel file JAR del gestore di utenti esterni per l’invito.
A. File JAR esterni richiesti dal file B. JAVA componente
Devi creare un pacchetto con l’handler degli utenti esterni per l’invito in un file JAR. Nel diagramma precedente, noterai che i file .JAVA sono elencati. Una volta inseriti in un file JAR, è necessario specificare anche i corrispondenti file .CLASS. Senza i file .CLASS, il gestore di autorizzazioni non funziona.
Dopo aver assemblato il gestore di autorizzazioni esterno in un file JAR, puoi distribuire il componente in AEM Forms. È possibile distribuire un solo gestore di utenti esterni invitati alla volta.
Puoi anche distribuire programmaticamente un componente.
Per testare l’handler degli utenti esterni invitati, puoi aggiungere utenti esterni da invitare utilizzando la console di amministrazione.
Per aggiungere utenti esterni da invitare utilizzando la console di amministrazione:
EDC_EXTERNAL_REGISTERED
. Salva le modifiche.EDC_EXTERNAL_REGISTERED
.Il gestore degli utenti esterni invitati non riesce se il componente viene arrestato o disinstallato.