Invite External Usersハンドラーの作成

このドキュメントのサンプルと例は、JEE環境上のAEM Formsに対してのみ提供されています。

Rights Managementサービス用のInvite External Usersハンドラーを作成できます。 「Invite External Users」ハンドラーを使用すると、Rights Managementサービスは外部ユーザーをRights Managementユーザーに招待できます。 ユーザーがRights Managementユーザーになった後は、ポリシーで保護されたPDFドキュメントを開くなどのタスクを実行できます。 外部ユーザーの招待ハンドラーをAEM Formsにデプロイすると、管理コンソールを使用して外部ユーザーハンドラーを操作できます。

メモ

Invite External Usersハンドラーは、AEM Formsコンポーネントです。 「外部ユーザーの招待ハンドラー」を作成する前に、コンポーネントの作成について理解しておくことをお勧めします。

手順の概要

外部ユーザーの招待ハンドラーを作成するには、次の手順を実行する必要があります。

  1. 開発環境を設定します。
  2. 外部ユーザーの招待ハンドラーの実装を定義します。
  3. コンポーネントのXMLファイルを定義します。
  4. Invite External Usersハンドラーをデプロイします。
  5. 外部ユーザーの招待ハンドラーをテストします。

開発環境のセットアップ

開発環境を設定するには、Eclipseプロジェクトなどの新しいJavaプロジェクトを作成する必要があります。 サポートされるEclipseのバージョンは3.2.1以降です。

Rights ManagementSPIでは、プロジェクトのクラスパスにedc-server-spi.jarファイルを設定する必要があります。 このJARファイルを参照しない場合、JavaプロジェクトでRights ManagementSPIを使用できません。 このJARファイルは、[install directory]\Adobe\Adobe_Experience_Manager_forms\sdk\spiフォルダーのAEM FormsSDKと共にインストールされます。

プロジェクトのクラスパスにedc-server-spi.jarファイルを追加するだけでなく、Rights ManagementサービスAPIの使用に必要なJARファイルも追加する必要があります。 これらのファイルは、Invite External Usersハンドラー内でRights ManagementサービスAPIを使用するために必要です。

Invite External Usersハンドラーの実装の定義

招待外部ユーザーハンドラーを開発するには、com.adobe.edc.server.spi.ersp.InvitedUserProviderインターフェイスを実装するJavaクラスを作成する必要があります。 このクラスにはinvitedUserという名前のメソッドが含まれています。このメソッドは、管理コンソールからアクセスできる​追加ユーザーの招待​ページを使用して電子メールアドレスが送信されたときにRights Managementサービスが呼び出します。

invitedUserメソッドは、ユーザーの追加招待​ページから送信された、文字列で型指定された電子メールアドレスを含むjava.util.Listインスタンスを受け入れます。 invitedUserメソッドは、InvitedUserProviderResultオブジェクトの配列を返します。これは、通常、Userオブジェクトへの電子メールアドレスのマッピングです(nullは返しません)。

メモ

この節では、Invite External Usersハンドラーの作成方法を説明するだけでなく、AEM FormsAPIも使用します。

外部ユーザーの招待ハンドラーの実装には、createLocalPrincipalAccountという名前のユーザー定義メソッドが含まれています。 このメソッドは、電子メールアドレスをパラメーター値として指定する文字列値を受け取ります。 createLocalPrincipalAccountメソッドは、EDC_EXTERNAL_REGISTEREDというローカルドメインが存在することを前提としています。 このドメイン名は任意の名前に設定できます。ただし、実稼働用アプリケーションの場合は、エンタープライズドメインと統合する必要があります。

createUsersメソッドは、各電子メールアドレスを反復し、対応するUserオブジェクト(EDC_EXTERNAL_REGISTEREDドメインのローカルユーザー)を作成します。 最後に、doEmailsメソッドが呼び出されます。 このメソッドは、意図的にサンプル内にスタブとして残されます。 実稼働環境では、新しく作成したユーザーに招待用の電子メールメッセージを送信するアプリケーションロジックが含まれます。 実際のアプリケーションのアプリケーションロジックのフローを示すために、サンプルに残しておきます。

Invite External Usersハンドラーの実装の定義

次のinvite external usersハンドラーの実装は、管理コンソールからアクセスできる追加ユーザーの招待ページから送信された電子メールアドレスを受け付けます。

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]; 
    } 
       } 
}
 
メモ

このJavaクラスは、InviteExternalUsersSample.javaという名前のJAVAファイルとして保存されます。

認証ハンドラーのコンポーネントXMLファイルを定義する

invite external users handlerコンポーネントをデプロイするには、コンポーネントXMLファイルを定義する必要があります。 コンポーネントXMLファイルは各コンポーネントに対して存在し、コンポーネントに関するメタデータを提供します。

次のcomponent.xmlファイルは、外部ユーザーの招待ハンドラーに使用されます。 サービス名はInviteExternalUsersSampleで、このサービスが公開する操作はinvitedUserという名前です。 入力パラメーターはjava.util.Listインスタンスで、出力値はcom.adobe.edc.server.spi.esrp.InvitedUserProviderResultインスタンスの配列です。

Invite External UsersハンドラーのコンポーネントXMLファイルの定義

<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> 

Invite External Usersハンドラーのパッケージ化

Invite外部ユーザーハンドラーをAEM Formsにデプロイするには、JavaプロジェクトをJARファイルにパッケージ化する必要があります。 edc-server-spi.jarファイルやadobe-rightsmanagement-client.jarファイルなど、invite外部ユーザーハンドラーのビジネスロジックが依存する外部JARファイルもJARファイルに含める必要があります。 また、コンポーネントのXMLファイルが存在する必要があります。 component.xmlファイルと外部JARファイルは、JARファイルのルートに配置する必要があります。

メモ

下の図では、BootstrapImplクラスが示されています。 この節では、BootstrapImplクラスの作成方法については説明しません。

次の図に、Javaプロジェクトのコンテンツを示します。このコンテンツは、invite external usersハンドラーのJARファイルにパッケージ化されています。

ユーザーの招待

A.コンポーネントに必要な外部JARファイルB. JAVAファイル

invite外部ユーザーハンドラーは、JARファイルにパッケージ化する必要があります。 上の図では、.JAVAファイルが表示されています。 JARファイルにパッケージ化した後は、対応する.CLASSファイルも指定する必要があります。 .CLASSファイルがない場合、認証ハンドラは機能しません。

メモ

外部認証ハンドラーをJARファイルにパッケージ化した後、コンポーネントをAEM Formsにデプロイできます。 1度に1つの招待外部ユーザーハンドラーのみを展開できます。

メモ

プログラムによってコンポーネントをデプロイすることもできます。

Invite External Usersハンドラーのテスト

招待外部ユーザーハンドラーをテストするには、管理コンソールを使用して、招待する外部ユーザーを追加します。

管理コンソールを使用して招待する外部ユーザーを追加するには:

  1. Workbenchを使用して、invite外部ユーザーハンドラーのJARファイルをデプロイします。
  2. アプリケーションサーバーを再起動します。
  3. 管理コンソールにログインします。
  4. サービス/Rights Management/設定/招待​ユーザー登録​をクリックします。
  5. 招待ユーザーの登録を有効にする」ボックスをオンにして、招待ユーザーの登録を有効にします。 「組み込みの登録システム​を使用」で、「いいえ」をクリックします。 設定を保存します。
  6. 管理コンソールホームページで、設定/User Management/ドメインの管理​をクリックします。
  7. Click New Local Domain. 次のページで、名前と識別子の値がEDC_EXTERNAL_REGISTEREDのドメインを作成します。 変更を保存します。
  8. 管理コンソールホームページで、サービス/Rights Management/招待ユーザーおよびローカルユーザー​をクリックします。 追加ユーザーの招待​ページが表示されます。
  9. 電子メールアドレスを入力します(現在の招待外部ユーザーハンドラーは、実際に電子メールメッセージを送信しないので、電子メールアドレスを有効にする必要はありません)。 「OK」をクリックします。ユーザーがシステムに招待されます。
  10. 管理コンソールホームページで、設定/ユーザー管理/ユーザーとグループ​をクリックします。
  11. 検索」フィールドに、指定した電子メールアドレスを入力します。 「検索」をクリックします。招待したユーザーは、ローカルEDC_EXTERNAL_REGISTEREDドメインにユーザーとして表示されます。
メモ

コンポーネントが停止またはアンインストールされている場合、Invite External Usersハンドラーは失敗します。

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now