ユーザーの管理 managing-users
このドキュメントのサンプルと例は、JEE 環境の AEM Forms のみを対象としています。
User Management について
User Management API を使用して、役割、権限、プリンシパル(ユーザーまたはグループ)を管理し、ユーザーを認証できるクライアントアプリケーションを作成できます。User Management API は、次の AEM Forms API で構成されています。
- Directory Manager Service API
- Authentication Manager Service API
- Authorization Manager Service API
User Management では、役割および権限の割り当て、削除、決定が可能です。また、ドメイン、ユーザー、グループの割り当て、削除、問い合わせも可能です。最後に、User Management を使用してユーザーを認証できます。
ユーザーの追加では、プログラムによってユーザーを追加する方法を説明します。この節では、Directory Manager Service API を使用します。
ユーザーの削除では、ユーザーをプログラムで削除する方法を説明します。この節では、Directory Manager Service API を使用します。
ユーザーとグループの管理では、ローカルユーザーとディレクトリユーザーの違いを理解し、Java および web サービス API を使用してユーザーとグループをプログラムで管理する方法の例を確認できます。この節では、Directory Manager Service API を使用します。
役割と権限の管理では、システムの役割と権限、およびそれらを拡張するためにプログラムで実行できる操作について学び、Java および web サービス API を使用して役割と権限をプログラムで管理する方法の例を確認します。この節では、Directory Manager Service API と Authorization Manager Service API の両方を使用します。
ユーザーの認証では、Java および web サービス API を使用してプログラムによってユーザーを認証する方法の例が表示されます。この節では、Authorization Manager Service API を使用します。
認証プロセスについて
User Management には、組み込みの認証機能が用意されており、独自の認証プロバイダーと接続する機能も備えています。User Management は、認証リクエストを受け取ると(ユーザーがログインを試みるなど)、認証プロバイダーにユーザー情報を渡して認証を行います。User Management は、ユーザーの認証後に認証プロバイダーから結果を受け取ります。
次の図は、ログインを試みるエンドユーザー、User Management、および認証プロバイダー間のやり取りを示しています。
次の表に、認証プロセスの各ステップを示します。
[com.adobe.idp.um.webservices.WSSecurityHandler] errorCode:12803 errorCodeHEX:0x3203 message:WSSecurityHandler: UM authenticate returns exception : An error was discovered processing the <wsse:Security> header. (WSSecurityEngine: Invalid timestamp The security semantics of message have expired).
ディレクトリ管理について
User Management は、LDAP ディレクトリへの接続をサポートするディレクトリサービスプロバイダ (DirectoryManagerService) と併せてパッケージ化されます。組織で LDAP 以外のリポジトリを使用してユーザーレコードを保存する場合、リポジトリーで使用する独自のディレクトリサービスプロバイダーを作成できます。
ディレクトリサービスプロバイダーは、User Management のリクエスト時に、ユーザーストアからレコードを取得します。User Management は、パフォーマンスを向上させるために、ユーザーおよびグループのレコードをデータベースに定期的にキャッシュします。
ディレクトリサービスプロバイダーを使用して、User Management データベースとユーザーストアを同期できます。このステップでは、すべてのユーザーディレクトリ情報と、すべてのユーザーレコードとグループレコードが最新の状態に保たれます。
また、DirectoryManagerService では、ドメインを作成および管理する機能を提供します。ドメインは、異なるユーザーベースを定義します。ドメインの境界は、通常、組織の構造やユーザーストアの設定方法に従って定義されます。User Management ドメインは、認証プロバイダーおよびディレクトリサービスプロバイダーが使用する設定を提供します。
User Management が書き出す設定 XML で、属性値が Domains のルートノードには、User Management 用に定義された各ドメインの XML 要素が含まれます。これらの各要素には、特定のサービスプロバイダーに関連付けられたドメインの側面を定義する他の要素が含まれます。
objectSID の値について
Active Directory を使用する場合、 objectSID の値は、複数のドメインで一意の属性ではありません。この値は、オブジェクトのセキュリティ識別情報を格納しています。複数ドメイン環境(ドメインのツリーなど)では、 objectSID の値は異なる場合があります。
objectSID 値は、ある Active Directory ドメインから別のドメインにオブジェクトが移動された場合に変更されます。オブジェクトによっては、ドメイン内のどこにいても同じobjectSID値を持つものがあります。例えば、BUILTIN\Administrators、BUILTIN\Power Users などのグループは、ドメインに関係なく同じ objectSID 値を持ちます。これらの objectSID 値はよく知られています。
ユーザーの追加 adding-users
Directory Manager Service API(Java および web サービス)を使用すると、ユーザーをプログラムで AEM Forms に追加できます。ユーザーを追加した後、ユーザーを必要とするサービス操作を実行する際に、そのユーザーを使用できます。例えば、新しいユーザーにタスクを割り当てることができます。
手順の概要 summary-of-steps
ユーザーを追加するには、次の手順を実行します。
- プロジェクトファイルを含めます。
- DirectoryManagerService クライアントを作成します。
- ユーザー情報を定義します。
- AEM Forms にユーザーを追加します。
- ユーザーが追加されていることを確認します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを含めます。
DirectoryManagerService クライアントの作成
Directory Manager サービスの操作をプログラムで実行する前に、Directory Manager Service API クライアントを作成します。
ユーザー情報の定義
Directory Manager Service API を使用して新しいユーザーを追加する場合は、そのユーザーの情報を定義してください。通常、新しいユーザーを追加する場合、次の値を定義します。
- ドメイン名:ユーザーが属するドメイン(例:
DefaultDom)。 - ユーザー識別情報の値:ユーザーの識別情報の値(例:
wblue)。 - プリンシパルタイプ:ユーザーのタイプ(例:
USER))。 - 名:ユーザーの名(例:
Wendy)。 - 姓:ユーザーの姓(例:
Blue)) - ロケール:ユーザーのロケール情報。
AEM Forms へのユーザーの追加
ユーザー情報を定義した後、そのユーザーを AEM Forms に追加できます。ユーザーを追加するには、DirectoryManagerServiceClient オブジェクトの createLocalUser メソッドを呼び出してください。
ユーザーが追加されたことを確認
ユーザーが追加されたことを確認することにより、問題が発生しなかったことを確認できます。ユーザー識別情報の値を使用して、新しいユーザーを見つけます。
関連トピック
Java API を使用してユーザーを追加する add-users-using-the-java-api
Directory Manager Service API(Java)を使用してユーザーを追加します。
-
プロジェクトファイルを含めます。
adobe-livecycle-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
-
DirectoryManagerServices クライアントを作成します。
コンストラクターを使用して接続プロパティを含む
ServiceClientFactoryオブジェクトを渡すことによって、DirectoryManagerServiceClientオブジェクトを作成します。 -
ユーザー情報を定義します。
- コンストラクターを使用して
UserImplオブジェクトを作成します。 UserImplオブジェクトのsetDomainNameメソッドを呼び出して、ドメイン名を設定します。ドメイン名を指定する文字列値を渡します。UserImplオブジェクトのsetPrincipalTypeメソッドを呼び出して、プリンシパルタイプを設定します。ユーザーのタイプを指定する文字列値を渡します。例えば、USERを指定できます。UserImplオブジェクトのsetUseridメソッドを呼び出して、ユーザー ID の値を設定します。ユーザー識別子の値を指定する文字列値を渡します。例えば、wblueを指定できます。UserImplオブジェクトのsetCanonicalNameメソッドを呼び出して、正規名を設定します。ユーザーの正規名を指定する文字列値を渡します。例えば、wblueを指定できます。UserImplオブジェクトのsetGivenNameメソッドを呼び出して、名を設定します。ユーザーの名を指定する文字列値を渡します。例えば、Wendyを指定できます。UserImplオブジェクトのsetFamilyNameメソッドを呼び出して、姓を設定します。ユーザーの姓を指定する文字列値を渡します。例えば、Blueを指定できます。
note note NOTE UserImplオブジェクトに属するメソッドを呼び出して他の値を設定します。例えば、UserImplオブジェクトのsetLocaleメソッドを呼び出して、ロケール値を設定できます。 - コンストラクターを使用して
-
AEM Forms にユーザーを追加します。
DirectoryManagerServiceClientオブジェクトのcreateLocalUserメソッドを呼び出して、以下の値を渡します。- 新しいユーザーを表す
UserImplオブジェクト - ユーザーのパスワードを表す文字列値
この
createLocalUserメソッドは、ローカルユーザー ID の値を指定する文字列値を返します。 - 新しいユーザーを表す
-
ユーザーが追加されたことを確認します。
- コンストラクターを使用して
PrincipalSearchFilterオブジェクトを作成します。 PrincipalSearchFilterオブジェクトのsetUserIdメソッドを呼び出して、ユーザー ID の値を設定します。ユーザー ID の値を表す文字列値を渡します。DirectoryManagerServiceClientオブジェクトのfindPrincipalsメソッドを呼び出し、PrincipalSearchFilterオブジェクトを渡しますこのメソッドは、java.util.Listインスタンス(各要素はUserオブジェクト)を返します。java.util.Listインスタンスを繰り返し、ユーザーを特定します。
- コンストラクターを使用して
関連トピック
Web サービス API を使用してユーザーを追加する add-users-using-the-web-service-api
Directory Manager サービス API(web サービス)を使用してユーザーを追加します。
-
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。サービス参照に WSDL 定義
http://localhost:8080/soap/services/DirectoryManagerService?WSDL&lc_version=9.0.1を使用していることを確認してください。note note NOTE localhostを、AEM Forms をホストするサーバーの IP アドレスで置換します。 -
DirectoryManagerService クライアントを作成します。
-
デフォルトのコンストラクターを使用して
DirectoryManagerServiceClientオブジェクトを作成します。 -
System.ServiceModel.EndpointAddressコンストラクタを使用してDirectoryManagerServiceClient.Endpoint.Addressオブジェクトを作成します。WSDL を 指定する文字列値を AEM Forms サービスに渡します(例:http://localhost:8080/soap/services/DirectoryManagerService?blob=mtom)。lc_version属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。?blob=mtomを指定するようにしてください。 -
DirectoryManagerServiceClient.Endpoint.Bindingフィールドの値を取得して、System.ServiceModel.BasicHttpBindingオブジェクトを作成します。戻り値をBasicHttpBindingにキャストします。 -
System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
DirectoryManagerServiceClient.ClientCredentials.UserName.UserNameフィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
DirectoryManagerServiceClient.ClientCredentials.UserName.Passwordフィールドに割り当てます。 - 定数値
HttpClientCredentialType.BasicをBasicHttpBindingSecurity.Transport.ClientCredentialTypeフィールドに割り当てます。 - 定数値
BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
-
-
ユーザー情報を定義します。
- コンストラクターを使用して
UserImplオブジェクトを作成します。 - デフォルト名を設定するには、
UserImplオブジェクトのdomainNameフィールドに文字列値を割り当てます。 - プリンシパルタイプを設定するには、
UserImplオブジェクトのprincipalTypeフィールドに文字列値を割り当てます。例えば、USERを指定できます。 - ユーザー ID の値を設定するには、
UserImplオブジェクトのuseridフィールドに文字列値を割り当てます。 - 正規名の値を設定するには、
UserImplオブジェクトのcanonicalNameフィールドに文字列値を割り当てます。 - 指定された名前の値を設定するには、
UserImplオブジェクトのgivenNameフィールドに文字列値を割り当てます。 - 姓の値を設定するには、
UserImplオブジェクトのfamilyNameフィールドに文字列値を割り当てます。
- コンストラクターを使用して
-
AEM Forms にユーザーを追加します。
DirectoryManagerServiceClientオブジェクトのcreateLocalUserメソッドを呼び出して、以下の値を渡します。- 新しいユーザーを表す
UserImplオブジェクト - ユーザーのパスワードを表す文字列値
この
createLocalUserメソッドは、ローカルユーザー ID の値を指定する文字列値を返します。 - 新しいユーザーを表す
-
ユーザーが追加されたことを確認します。
- コンストラクターを使用して
PrincipalSearchFilterオブジェクトを作成します。 - ユーザー ID の値を設定するには、
PrincipalSearchFilterオブジェクトのuserIdフィールドにユーザー ID の値を表す文字列値を割り当てます。 DirectoryManagerServiceClientオブジェクトのfindPrincipalsメソッドを呼び出し、PrincipalSearchFilterオブジェクトを渡しますこのメソッドは、MyArrayOfUserコレクションオブジェクト(各要素はUserオブジェクト)を返します。MyArrayOfUserコレクションを反復処理して、ユーザーを特定します。
- コンストラクターを使用して
関連トピック
ユーザーの削除 deleting-users
Directory Manager Service API(Java および web サービス)を使用して、AEM Forms からユーザーをプログラムで削除できます。ユーザーを削除すると、そのユーザーはユーザーを必要とするサービス操作を実行できなくなります。例えば、削除されたユーザーにタスクを割り当てることはできません。
手順の概要 summary_of_steps-1
ユーザーを削除するには、以下の手順に従います。
- プロジェクトファイルを含めます。
- DirectoryManagerService クライアントを作成します。
- 削除するユーザーを指定します。
- AEM Forms からユーザーを削除します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを含めます。
DirectoryManagerService クライアントの作成
Directory Manager Service API 操作をプログラムで実行する前に、Directory Manager サービスクライアントを作成します。
削除するユーザーの指定
ユーザー ID の値を使用して、削除するユーザーを指定できます。
AEM Forms からユーザーを削除
ユーザーを削除するには、DirectoryManagerServiceClient オブジェクトの deleteLocalUser メソッドを呼び出します。
関連トピック
Java API を使用したユーザーの削除 delete-users-using-the-java-api
Directory Manager Service API(Java)を使用してユーザーを削除します。
-
プロジェクトファイルを含めます。
adobe-livecycle-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
-
DirectoryManagerService クライアントを作成します。
コンストラクタを使用し、接続プロパティを含む
ServiceClientFactoryオブジェクトを渡すことで、DirectoryManagerServiceClientオブジェクトを作成します。 -
削除するユーザーを指定します。
- コンストラクタを使用して
PrincipalSearchFilterオブジェクトを作成します。 PrincipalSearchFilterオブジェクトのsetUserIdメソッドを呼び出して、ユーザー ID の値を設定します。ユーザー ID の値を表す文字列値を渡します。DirectoryManagerServiceClientオブジェクトのfindPrincipalsメソッドを呼び出し、PrincipalSearchFilterオブジェクトを渡しますこのメソッドは、java.util.Listインスタンスを返します。このインスタンスの各要素はUserオブジェクトです。java.util.Listインスタンスを繰り返し、削除するユーザーを特定します。
- コンストラクタを使用して
-
AEM Forms からユーザーを削除します。
DirectoryManagerServiceClientオブジェクトのdeleteLocalUserメソッドを呼び出して、Userオブジェクトのoidフィールドの値を渡します。UserオブジェクトのgetOidメソッドを呼び出します。java.util.Listインスタンスから取得したUserオブジェクトを使用します。
関連トピック
クイックスタート(EJB モード):Java API を使用したユーザーの削除
Web サービス API を使用したユーザーの削除 delete-users-using-the-web-service-api
Directory Manager Service API(web サービス)を使用してユーザーを削除します。
-
プロジェクトファイルを含めます。
adobe-livecycle-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
-
DirectoryManagerService クライアントを作成します。
-
デフォルトのコンストラクターを使用して
DirectoryManagerServiceClientオブジェクトを作成します。 -
System.ServiceModel.EndpointAddressコンストラクタを使用してDirectoryManagerServiceClient.Endpoint.Addressオブジェクトを作成します。WSDL を 指定する文字列値を AEM Forms サービスに渡します(例:http://localhost:8080/soap/services/DirectoryManagerService?blob=mtom)。lc_version属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。blob=mtom.を指定してください -
DirectoryManagerServiceClient.Endpoint.Bindingフィールドの値を取得して、System.ServiceModel.BasicHttpBindingオブジェクトを作成します。戻り値をBasicHttpBindingにキャストします。 -
System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
DirectoryManagerServiceClient.ClientCredentials.UserName.UserNameフィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
DirectoryManagerServiceClient.ClientCredentials.UserName.Passwordフィールドに割り当てます。 - 定数値
HttpClientCredentialType.BasicをBasicHttpBindingSecurity.Transport.ClientCredentialTypeフィールドに割り当てます。 - 定数値
BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
-
-
削除するユーザーを指定します。
- コンストラクタを使用して
PrincipalSearchFilterオブジェクトを作成します。 - ユーザー ID の値を設定するには、
PrincipalSearchFilterオブジェクトのuserIdフィールドに文字列値を入力します。 DirectoryManagerServiceClientオブジェクトのfindPrincipalsメソッドを呼び出し、PrincipalSearchFilterオブジェクトを渡しますこのメソッドは、MyArrayOfUserコレクションオブジェクト(各要素はUserオブジェクト)を返します。MyArrayOfUserコレクションを反復処理して、ユーザーを特定します。MyArrayOfUserコレクションオブジェクトから取得したUserオブジェクトは、ユーザーの削除に使用されます。
- コンストラクタを使用して
-
AEM Forms からユーザーを削除します。
ユーザーを削除するには、
Userオブジェクトのoidフィールド値をDirectoryManagerServiceClientオブジェクトのdeleteLocalUserメソッドに渡します。
関連情報
グループの作成 creating-groups
Directory Manager Service API(Java および web サービス)を使用して、プログラムによって AEM Forms グループを作成できます。グループを作成したらそのグループを使用して、グループを必要とするサービス操作を実行できます。例えば、ユーザーを新規グループに割り当てることができます(ユーザーとグループの管理を参照)。
手順の概要 summary_of_steps-2
グループを作成するには、次の手順を実行します。
- プロジェクトファイルを含めます。
- DirectoryManagerService クライアントを作成します。
- グループが存在しないことを確認します。
- グループを作成します。
- グループでアクションを実行します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-utilities.jar(AEM Forms を JBoss にデプロイする場合に必要)
- jbossall-client.jar(AEM Forms が JBoss にデプロイされている場合に必要)
これらのファイルの場所については、AEM Forms Java ライブラリファイルを含めるを参照してください。
DirectoryManagerService クライアントの作成
Directory Manager サービスの操作をプログラムで実行する前に、Directory Manager Service API クライアントを作成します。
グループが存在するかどうかを判断する
グループを作成する場合は、そのグループが同じドメインに存在しないことを確認します。つまり、2 つのグループが同じドメイン内で同じ名前を持つことはできません。このタスクを実行するには、検索を実行し、2 つの値に基づいて検索結果をフィルタリングします。プリンシパルタイプを com.adobe.idp.um.api.infomodel.Principal.PRINCIPALTYPE_GROUP に設定して、グループのみが返されるようにします。また、ドメイン名を必ず指定してください。
グループの作成
ドメインにグループが存在しないと判断したら、グループを作成し、次の属性を指定します。
- CommonName:グループの名前。
- ドメイン:グループを追加するドメイン。
- 説明:グループの説明
グループでのアクションの実行
グループを作成した後、そのグループを使用してアクションを実行できます。例えば、グループにユーザーを追加できます。グループにユーザーを追加するには、ユーザーとグループの両方で一意の ID 値を取得します。これらの値を addPrincipalToLocalGroup メソッドに渡します。
関連トピック
Java API を使用したグループの作成 create-groups-using-the-java-api
Directory Manager Service API(Java)を使用してグループを作成します。
-
プロジェクトファイルを含めます。
adobe-livecycle-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
-
DirectoryManagerService クライアントを作成します。
コンストラクターを使用して接続プロパティを含む
ServiceClientFactoryオブジェクトを渡して、DirectoryManagerServiceClientオブジェクトを作成します。 -
グループが存在するかどうかを確認します。
- コンストラクターを使用して
PrincipalSearchFilterオブジェクトを作成します。 PrincipalSearchFilterオブジェクトのsetPrincipalTypeオブジェクトを呼び出して、プリンシパルタイプを設定します。値com.adobe.idp.um.api.infomodel.Principal.PRINCIPALTYPE_GROUPを渡します。PrincipalSearchFilterオブジェクトのsetSpecificDomainNameオブジェクトを呼び出してドメインを設定します。ドメイン名を指定する文字列値を渡します。- グループを検索するには、
DirectoryManagerServiceClientオブジェクトのfindPrincipalsメソッド(プリンシパルはグループにすることができます)を呼び出します。プリンシパルタイプとドメイン名を指定するPrincipalSearchFilterオブジェクトを渡します。このメソッドは、各要素がGroupインスタンスであるjava.util.Listインスタンスを返します。各グループインスタンスは、PrincipalSearchFilterオブジェクトを使用して指定されたフィルターに準拠しています。 java.util.Listインスタンスを反復処理します。各要素について、グループ名を取得します。グループ名が新しいグループ名と等しくないことを確認します。
- コンストラクターを使用して
-
グループを作成します。
- グループが存在しない場合は、
GroupオブジェクトのsetCommonNameメソッドを呼び出して、グループ名を指定する文字列値を渡します。 GroupオブジェクトのsetDescriptionメソッドを呼び出して、グループの説明を指定する文字列値を渡します。GroupオブジェクトのsetDomainNameメソッドを呼び出して、ドメイン名を指定する文字列値を渡します。DirectoryManagerServiceClientオブジェクトのcreateLocalGroupメソッドを呼び出して、Groupインスタンスを渡します。
createLocalUserメソッドは、ローカルユーザー ID の値を指定する文字列値を返します。 - グループが存在しない場合は、
-
グループでアクションを実行します。
- コンストラクターを使用して
PrincipalSearchFilterオブジェクトを作成します。 PrincipalSearchFilterオブジェクトのsetUserIdメソッドを呼び出して、ユーザー ID の値を設定します。ユーザー ID の値を表す文字列値を渡します。DirectoryManagerServiceClientオブジェクトのfindPrincipalsメソッドを呼び出し、PrincipalSearchFilterオブジェクトを渡しますこのメソッドは、java.util.Listインスタンス(各要素はUserオブジェクト)を返します。java.util.Listインスタンスを反復処理して、ユーザーを特定します。DirectoryManagerServiceClientオブジェクトのaddPrincipalToLocalGroupメソッドを呼び出して、グループにユーザーを追加します。UserオブジェクトのgetOidメソッドの戻り値を渡します。GroupオブジェクトのgetOidメソッドの戻り値を渡します(新しいグループを表すGroupインスタンスを使用)。
- コンストラクターを使用して
関連情報
ユーザーとグループの管理 managing-users-and-groups
このトピックでは、(Java)を使用して、ドメイン、ユーザー、グループをプログラムで割り当て、削除およびクエリする方法について説明します。
"objectsid" です。これはバイナリ値です)。例えば、Novell eDirectory 属性 "GUID" は単純な文字列データタイプではないので、機能しません。- Active Directory の場合は、
"objectsid"を使用します。 - SunOne の場合は、
"nsuniqueid"を使用します。
手順の概要 summary_of_steps-3
ユーザーとグループを管理するには、次の手順を実行します。
- プロジェクトファイルを含めます。
- DirectoryManagerService クライアントを作成します。
- 適切なユーザーまたはグループの操作を呼び出します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めるようにします。
DirectoryManagerService クライアントの作成
Directory Manager サービスの操作をプログラムで実行する前に、Directory Manager サービスクライアントを作成する必要があります。Java API では、これは DirectoryManagerServiceClient オブジェクトを作成することによって実現できます。Web サービス API では、これは DirectoryManagerServiceService オブジェクトを作成することによって実現できます。
適切なユーザーまたはグループの操作を呼び出す
サービスクライアントを作成したら、ユーザーまたはグループの管理操作を呼び出すことができます。サービスクライアントでは、ドメイン、ユーザー、グループの割り当て、削除、問い合わせを行うことができます。ディレクトリプリンシパルまたはローカルプリンシパルをローカルグループに追加することは可能ですが、ローカルプリンシパルをディレクトリグループに追加することはできません。
関連項目
Java API を使用したユーザーとグループの管理 managing-users-and-groups-using-the-java-api
(Java)を使用してユーザー、グループ、ドメインをプログラムで管理するには、次のタスクを実行します。
-
プロジェクトファイルを含めます。
adobe-livecycle-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。これらのファイルの場所については、AEM Forms Java ライブラリファイルを含めるを参照してください。
-
DirectoryManagerService クライアントを作成します。
コンストラクターを使用して、接続プロパティを含む
ServiceClientFactoryオブジェクトを渡すことによって、DirectoryManagerServiceClientオブジェクトを作成します。詳しくは、接続プロパティの設定を参照してください。 -
適切なユーザーまたはグループの操作を呼び出します。
ユーザーまたはグループを検索するには、プリンシパルを検索する
DirectoryManagerServiceClientオブジェクトのメソッドのいずれかを呼び出します(プリンシパルはユーザーまたはグループにすることができるためです)。次の例では、findPrincipalsメソッドは、検索フィルター(PrincipalSearchFilterオブジェクト)を使用して呼び出されています。この場合の戻り値は
Principalオブジェクトを含むjava.util.Listであるため、結果を反復処理し、PrincipalオブジェクトをUserオブジェクトまたはGroupオブジェクトにキャストします。結果の
UserオブジェクトまたはGroupオブジェクト(両方ともPrincipalインターフェイスから継承)を使用して、ワークフローで必要な情報を取得します。例えば、ドメイン名と正規名の値を組み合わせて、プリンシパルを一意に識別します。これらはそれぞれPrincipalオブジェクトのgetDomainNameメソッドおよびgetCanonicalNameメソッドを呼び出して取得されます。ローカルユーザーを削除するには、
DirectoryManagerServiceClientオブジェクトのdeleteLocalUserメソッドを呼び出してユーザーの識別情報を渡します。ローカルグループを削除するには、
DirectoryManagerServiceClientオブジェクトのdeleteLocalGroupメソッドを呼び出してグループの識別情報を渡します。
関連情報
Web サービス API を使用したユーザーとグループの管理 managing-users-and-groups-using-the-web-service-api
Directory Manager Service API(web サービス)を使用してユーザー、グループ、ドメインをプログラムで管理するには、次のタスクを実行します。
-
プロジェクトファイルを含めます。
- Directory Manager WSDL を使用するMicrosoft .NET クライアントアセンブリを作成します(Base64 エンコーディングを使用したAEM Forms の呼び出しを参照してください)。
- Microsoft .NET クライアントアセンブリを参照します(Base64 エンコーディングを使用する .NET クライアントアセンブリの作成を参照してください)。
-
DirectoryManagerService クライアントを作成します。
プロキシクラスのコンストラクターを使用して、
DirectoryManagerServiceServiceオブジェクトを作成します。 -
適切なユーザーまたはグループの操作を呼び出します。
ユーザーまたはグループを検索するには、プリンシパルを検索する
DirectoryManagerServiceServiceオブジェクトのメソッドのいずれかを呼び出します(プリンシパルはユーザーまたはグループにすることができるためです)。次の例では、findPrincipalsWithFilterメソッドは、検索フィルター(PrincipalSearchFilterオブジェクト)を使用して呼び出されます。PrincipalSearchFilterオブジェクトを使用する場合、ローカルプリンシパルは、isLocalプロパティがtrueに設定されている場合のみに返されます。この動作は、Java API で発生する動作とは異なります。note note NOTE 検索フィルターで結果の最大数が PrincipalSearchFilter.resultsMaxフィールドを介して指定されていない場合、最大 1000 個の結果が返されます。これは、Java API を使用して発生する動作とは異なります。Java API では、結果の数はデフォルトで最大 10 個です。また、findGroupMembersなどの検索メソッドでは、検索フィルターで(たとえば、GroupMembershipSearchFilter.resultsMaxフィールドで)結果の最大数が指定されていない場合、結果は得られません。これは、GenericSearchFilterクラスから継承されるすべての検索フィルターに適用されます。詳しくは、「AEM Forms API リフェレンス」を参照してください。この場合の戻り値は
Principalオブジェクトを含むobject[]であるため、結果を反復処理してPrincipalオブジェクトをUserまたはGroupオブジェクトにキャストします。結果の
UserオブジェクトまたはGroupオブジェクト(両方ともPrincipalインターフェイス から継承)を使用して、ワークフローで必要な情報を取得します。例えば、ドメイン名と正規名の値を組み合わせて、プリンシパルを一意に識別します。これらはそれぞれ、PrincipalオブジェクトのdomainNameフィールドおよびcanonicalNameフィールドを呼び出すことによって設定されます。ローカルユーザーを削除するには、
DirectoryManagerServiceServiceオブジェクトのdeleteLocalUserメソッドを呼び出してユーザーの識別情報を渡します。ローカルグループを削除するには、
DirectoryManagerServiceServiceオブジェクトのdeleteLocalGroupメソッドを呼び出してグループの識別情報を渡します。
関連情報
役割と権限の管理 managing-roles-and-permissions
このトピックでは、Authorization Manager Service API(Java)を使用して、役割と権限をプログラムで割り当て、削除、決定する方法について説明します。
AEM Forms では、役割 とは、1 つまたは複数のシステムレベルのリソースにアクセスするための権限のグループです。これらの権限はユーザー管理を通じて作成され、サービスコンポーネントによって適用されます。例えば、管理者は「ポリシーセット作成者」の役割をユーザーのグループに割り当てることができます。Rights Management は、その役割を持つグループのユーザーに対し、管理コンソールを通じてポリシーセットを作成することを許可します。
役割には、デフォルトロール および カスタムロール の 2 つのタイプがあります。デフォルトロール(システムロール)は既に AEM Forms に存在します。デフォルトロールは管理者が削除または変更できないと想定するものであり、不変です。カスタムロールは管理者が作成するものであり、作成後、変更または削除できるので、可変です。
役割を使用すると、権限の管理が容易になります。役割がプリンシパルに割り当てられると、そのプリンシパルに一連の権限が自動的に割り当てられ、プリンシパルに関する特定のアクセス関連の決定はすべて、割り当てられた権限の全体セットに基づいて行われます。
手順の概要 summary_of_steps-4
役割と権限を管理するには、次の手順を実行します。
- プロジェクトファイルを含めます。
- AuthorizationManagerService クライアントを作成します。
- 適切な役割または権限の操作を呼び出します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めるようにします。
AuthorizationManagerService クライアントの作成
User Management AuthorizationManagerService 操作をプログラムで実行する前に、AuthorizationManagerService クライアントを作成する必要があります。Java API では、これは AuthorizationManagerServiceClient オブジェクトを作成することによって実現できます。
適切な役割または権限の操作を呼び出す
サービスクライアントを作成したら、役割または権限の操作を呼び出すことができます。サービスクライアントを使用すると、役割と権限の割り当て、削除、決定を行うことができます。
関連項目
Java API を使用した役割と権限の管理 managing-roles-and-permissions-using-the-java-api
Authorization Manager Service API(Java)を使用して役割と権限を管理するには、次のタスクを実行します。
-
プロジェクトファイルを含めます。
adobe-livecycle-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
-
AuthorizationManagerService クライアントを作成します。
コンストラクターを使用し、接続プロパティを含む
ServiceClientFactoryオブジェクトを渡すことにより、AuthorizationManagerServiceClientオブジェクトを作成します。 -
適切な役割または権限の操作を呼び出します。
プリンシパルに役割を割り当てるには、
AuthorizationManagerServiceClientオブジェクトのassignRoleメソッドを呼び出して、次の値を渡します。- 役割識別情報を含む
java.lang.Stringオブジェクト - プリンシパル識別情報を含む
java.lang.Stringオブジェクトの配列。
プリンシパルから役割を削除するには、
AuthorizationManagerServiceClientオブジェクトのunassignRoleメソッドを呼び出して、次の値を渡します。- 役割識別情報を含む
java.lang.Stringオブジェクト。 - プリンシパル識別情報を含む
java.lang.Stringオブジェクトの配列。
- 役割識別情報を含む
関連項目
Web サービス API を使用した役割と権限の管理 managing-roles-and-permissions-using-the-web-service-api
Authorization Manager Service API(Web サービス)を使用して、役割と権限を管理します。
-
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義
http://localhost:8080/soap/services/AuthorizationManagerService?WSDL&lc_version=9.0.1を使用するようにします。note note NOTE localhostを、AEM Forms をホストするサーバーの IP アドレスと置き換えます。 -
AuthorizationManagerService クライアントを作成します。
-
デフォルトのコンストラクターを使用して
AuthorizationManagerServiceClientオブジェクトを作成します。 -
System.ServiceModel.EndpointAddressコンストラクタを使用して、AuthorizationManagerServiceClient.Endpoint.Addressオブジェクトを作成します。WSDL を指定する文字列値を AEM Forms サービスに渡します(例:http://localhost:8080/soap/services/AuthorizationManagerService?blob=mtom)。lc_version属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。 -
AuthorizationManagerServiceClient.Endpoint.Bindingフィールドの値を取得してSystem.ServiceModel.BasicHttpBindingオブジェクトを作成します。戻り値をBasicHttpBindingにキャストします。 -
System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
AuthorizationManagerServiceClient.ClientCredentials.UserName.UserNameフィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
AuthorizationManagerServiceClient.ClientCredentials.UserName.Passwordフィールドに割り当てます。 - 定数値
HttpClientCredentialType.BasicをBasicHttpBindingSecurity.Transport.ClientCredentialTypeフィールドに割り当てます。 - 定数値
BasicHttpSecurityMode.TransportCredentialOnlyをBasicHttpBindingSecurity.Security.Modeフィールドに割り当てます。
-
-
適切な役割または権限の操作を呼び出します。
プリンシパルに役割を割り当てるには、
AuthorizationManagerServiceClientオブジェクトのassignRoleメソッドを呼び出して、次の値を渡します。- 役割識別情報を含む
stringオブジェクト - プリンシパル識別情報を含む
MyArrayOf_xsd_stringオブジェクト
プリンシパルから役割を削除するには、
AuthorizationManagerServiceServiceオブジェクトのunassignRoleメソッドを呼び出して、以下の値を渡します。- 役割識別情報を含む
stringオブジェクト。 - プリンシパル識別情報を含む
stringオブジェクトの配列。
- 役割識別情報を含む
関連項目
ユーザーの認証 authenticating-users
このトピックでは、Authentication Manager Service API(Java)を使用して、クライアントアプリケーションがユーザーをプログラムで認証する方法について説明します。
ユーザー認証は、安全なデータを格納するエンタープライズデータベースやその他のエンタープライズリポジトリとやり取りする際に必要になる場合があります。
例えば、ユーザーが web ページにユーザー名とパスワードを入力し、Forms をホストする J2EE アプリケーションサーバーにそれらの値を送信するシナリオを考えてみます。Forms のカスタムアプリケーションでは、Authentication Manager サービスを使用してユーザーを認証できます。
認証が成功した場合、アプリケーションは保護されたエンタープライズデータベースにアクセスします。そうでない場合は、ユーザーが承認されていないことを示すメッセージがユーザーに送信されます。
次の図に、アプリケーションのロジックフローを示します。
以下の表に、この図の手順を示します。
手順の概要 summary_of_steps-5
プログラムによるユーザーの認証を行うには、以下の手順を実行します。
- プロジェクトファイルを含めます。
- AuthenticationManagerService クライアントを作成します。
- 認証操作を呼び出します。
- 必要に応じて、コンテキストを取得し、クライアントアプリケーションが認証用に別の AEM Forms サービスに転送できるようにします。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めるようにします。
AuthenticationManagerService クライアントの作成
ユーザーをプログラムで認証する前に、AuthenticationManagerService クライアントを作成する必要があります。Java API を使用する場合、AuthenticationManagerServiceClient オブジェクトを作成します。
認証操作の呼び出し
サービスクライアントを作成すると、認証操作を呼び出すことができます。この操作には、ユーザー名やパスワードなど、ユーザーに関する情報が必要です。ユーザーが認証しない場合、例外がスローされます。
認証コンテキストの取得
ユーザーを認証すると、認証済みユーザーにもとづいてコンテキストを作成できます。その後、コンテンツを使用して別の AEM Forms サービスを呼び出すことができます。例えば、コンテキストを使用して EncryptionServiceClient を作成し、パスワードを使用して PDF ドキュメントを暗号化します。認証されたユーザーが、AEM Forms サービスを呼び出すために必要な Services User という名前の役割を持っていることを確認します。
関連トピック
Java API を使用したユーザーの認証 authenticate-a-user-using-the-java-api
Authentication Manager Service API(Java)を使用してユーザーを認証します。
-
プロジェクトファイルを含めます。
adobe-livecycle-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
-
AuthenticationManagerServices クライアントを作成します。
AuthenticationManagerServiceClientオブジェクトを作成するには、コンストラクターを使用し、接続プロパティを含むServiceClientFactoryオブジェクトを渡します。 -
認証操作を呼び出します。
AuthenticationManagerServiceClientオブジェクトのauthenticateメソッドを呼び出して、以下の値を渡します。- ユーザーの名前を含む
java.lang.Stringオブジェクト。 - ユーザーのパスワードを含むバイト配列(
byte[]オブジェクト)。java.lang.StringオブジェクトのgetBytesメソッドを呼び出すと、byte[]オブジェクトを取得できます。
認証メソッドが、認証済みユーザーに関する情報を含む
AuthResultオブジェクトを返します。 - ユーザーの名前を含む
-
認証コンテキストを取得します。
ServiceClientFactoryオブジェクトのgetContextメソッドを呼び出すことで、Contextオブジェクトが返されます。ContextオブジェクトのinitPrincipalメソッドを呼び出し、AuthResultを渡します。
Web サービス API を使用したユーザーの認証 authenticate-a-user-using-the-web-service-api
Authentication Manager Service API(web サービス)を使用してユーザーを認証します。
-
プロジェクトファイルを含めます。
- Authentication Manager WSDL を使用する Microsoft .NET クライアントアセンブリを作成します(Base64 エンコーディングを使用した AEM Forms の呼び出しを参照してください)。
- Microsoft .NET クライアントアセンブリを参照します(Base64 エンコーディングを使用した AEM Forms の呼び出しの「.NET クライアントアセンブリの参照」を参照してください)。
-
AuthenticationManagerService クライアントを作成します。
プロキシクラスのコンストラクターを使用して、
AuthenticationManagerServiceServiceオブジェクトを作成します。 -
認証操作を呼び出します。
AuthenticationManagerServiceClientオブジェクトのauthenticateメソッドを呼び出して、以下の値を渡します。- ユーザーの名前を含む
stringオブジェクト - ユーザーのパスワードを含むバイト配列(
byte[]オブジェクト)。以下の例に示すロジックを使用して、パスワードを含むstringオブジェクトをbyte[]配列に変換することによって、byte[]オブジェクトを取得できます。 - 戻り値は
AuthResultオブジェクトです。このオブジェクトは、ユーザーに関する情報を取得するために使用できます。以下の例では、ユーザーの情報は、最初にAuthResultオブジェクトのauthenticatedUserフィールドを取得し、続いてその結果のUserオブジェクトのcanonicalNameフィールドおよびdomainNameフィールドを取得することによって取得されます。
- ユーザーの名前を含む
関連トピック
プログラムによるユーザーの同期 programmatically-synchronizing-users
User Management API を使用して、プログラムによってユーザーを同期できます。ユーザーを同期する際、ユーザーリポジトリ内にあるユーザーデータで AEM Forms を更新します。例えば、新しいユーザーをユーザーリポジトリに追加するとします。同期操作を実行すると、新しいユーザーが AEM forms ユーザーになります。また、ユーザーリポジトリ内のユーザーは AEM Forms から削除されます。
次の図は、AEM Forms がユーザーリポジトリと同期する様子を示しています。
以下の表に、この図の手順を示します。
手順の概要 summary_of_steps-6
プログラムによってユーザーを同期するには、次の手順を実行します。
- プロジェクトファイルを含めます。
- UserManagerUtilServiceClient クライアントを作成します。
- エンタープライズドメインを指定します。
- 認証操作を呼び出します。
- 同期処理が完了したかどうかを確認します
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めるようにします。
UserManagerUtilServiceClientclient の作成
プログラムによるユーザーの同期を行う前に、UserManagerUtilServiceClient オブジェクトを作成する必要があります。
エンタープライズドメインを指定
User Management API を使用して同期操作を実行する前に、ユーザーが属するエンタープライズドメインを指定します。1 つまたは複数のエンタープライズドメインを指定できます。プログラムによって同期処理を実行する前に、管理コンソールを使用してエンタープライズドメインを設定する必要があります(管理ヘルプを参照)。
同期処理の呼び出し
1 つ以上のエンタープライズドメインを指定した後、同期処理を実行できます。この処理の実行に要する時間は、ユーザーリポジトリ内にあるユーザーレコードの数によって異なります。
同期処理が完了したかどうかを確認する
プログラムによって同期処理を実行した後、処理が完了したかどうかを確認できます。
関連トピック
Java API を使用したプログラムによるユーザーの同期 programmatically-synchronizing-users-using-the-java-api
User Management API(Java)を使用してユーザーを同期します。
-
プロジェクトファイルを含めます。
Java プロジェクトのクラスパスに、adobe-usermanager-client.jar や adobe-usermanager-util-client.jar などのクライアント JAR ファイルを含めます。
-
UserManagerUtilServiceClient クライアントを作成します。
コンストラクターを使用し、接続プロパティを含む
ServiceClientFactoryオブジェクトを渡して、UserManagerUtilServiceClientオブジェクトを作成します。 -
エンタープライズドメインを指定します。
UserManagerUtilServiceClientオブジェクトのscheduleSynchronizationメソッドを呼び出して、ユーザー同期処理を開始します。HashSetコンストラクターを使用してjava.util.Setインスタンスを作成します。Stringをデータタイプとして設定したことを確認してください。このJava.util.Setインスタンスは、同期操作が適用されるドメイン名を格納します。- 追加するドメイン名ごとに、
java.util.Setオブジェクトの add メソッドを参照し、ドメイン名を渡します。
-
同期操作を呼び出します。
ServiceClientFactoryオブジェクトのgetContextメソッドを呼び出すことで、Contextオブジェクトが返されます。ContextオブジェクトのinitPrincipalメソッドを呼び出し、AuthResultオブジェクトを渡します。
関連トピック