User Managementについて
User Management APIを使用して、ロール、権限、プリンシパル(ユーザーまたはグループ)を管理でき、ユーザーを認証できるクライアントアプリケーションを作成できます。 User Management APIは、次のAEM FormsAPIで構成されています。
User Managementでは、ロールと権限の割り当て、削除、決定を行うことができます。 また、ドメイン、ユーザー、グループの割り当て、削除、クエリも可能です。 最後に、User Managementを使用してユーザーを認証できます。
ユーザーの追加では、プログラム的にユーザーを追加する方法を理解しています。 この節では、Directory Manager Service APIを使用します。
ユーザーの削除では、ユーザーをプログラム的に削除する方法を理解しています。 この節では、Directory Manager Service APIを使用します。
ユーザーとグループの管理では、ローカルユーザーとディレクトリユーザーの違いを理解し、Java APIとWebサービスAPIを使用してユーザーとグループをプログラム的に管理する方法の例を紹介しています。 この節では、Directory Manager Service APIを使用します。
役割と権限の管理では、システムの役割と権限、およびそれらをプログラム的に拡張する方法について学び、JavaおよびWebサービスAPIを使用して役割と権限をプログラム的に管理する方法の例を示します。 このセクションでは、Directory Manager Service APIとAuthorization Manager Service APIの両方を使用します。
ユーザーの認証には、Java APIとWebサービスAPIを使用してユーザーをプログラム的に認証する方法の例が示されています。 この節では、承認マネージャーサービスAPIを使用します。
認証プロセスについて
User Managementには組み込みの認証機能があり、独自の認証プロバイダーとの接続機能も備わっています。 User Managementは、認証要求を受け取る(例えば、ユーザーがログインを試行する)と、認証のためにユーザー情報を認証プロバイダーに渡します。 User Managementは、ユーザーの認証後、認証プロバイダーから結果を受け取ります。
次の図に、ログインを試みたエンドユーザー、User Management、認証プロバイダー間でのやり取りを示します。
次の表に、認証プロセスの各手順を示します。
ステップ |
説明 |
---|---|
1 |
ユーザーがUser Managementを呼び出すサービスにログインしようとします。 ユーザは、ユーザ名とパスワードを指定する。 |
2 |
User Managementは、ユーザー名とパスワード、および設定情報を認証プロバイダーに送信します。 |
3 |
認証プロバイダは、ユーザストアに接続し、ユーザを認証する。 |
4 |
認証プロバイダーは、結果をUser Managementに返します。 |
5 |
User Managementでは、ユーザーが製品へのログインを許可するか、製品へのアクセスを拒否します。 |
サーバーのタイムゾーンがクライアントのタイムゾーンと異なる場合、WebSphere Application Serverクラスター上の.NETクライアントを使用してネイティブSOAPスタック上のAEM FormsGenerate PDFサービス用のWSDLを使用すると、次の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
値はよく知られています。
Directory Manager Service API(JavaおよびWebサービス)を使用して、ユーザーをプログラム的に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
メソッドを呼び出します。
ユーザーが追加されたことを確認します
ユーザーが追加されたことを確認して、問題が発生していないことを確認できます。 ユーザー識別子の値を使用して、新しいユーザーを見つけます。
関連トピック
Directory Manager追加 Service API(Java)を使用したユーザー:
プロジェクトファイルを含めます。
Javaプロジェクトのクラスパスに、adobe-usermanager-client.jarなどのクライアントJARファイルを含めます。
DirectoryManagerServicesクライアントを作成します。
コンストラクターを使用し、接続プロパティを含むServiceClientFactory
オブジェクトを渡して、DirectoryManagerServiceClient
オブジェクトを作成します。
ユーザー情報を定義します。
UserImpl
オブジェクトを作成します。UserImpl
オブジェクトのsetDomainName
メソッドを呼び出して、デメイン名を設定します。 ドメイン名を指定するstring値を渡します。UserImpl
オブジェクトのsetPrincipalType
メソッドを呼び出して、プリンシパルタイプを設定します。 ユーザーのタイプを指定するstring値を渡します。 例えば、USER
を指定できます。UserImpl
オブジェクトのsetUserid
メソッドを呼び出して、ユーザー識別子の値を設定します。 ユーザー識別子の値を指定するstring値を渡します。 例えば、wblue
を指定できます。UserImpl
オブジェクトのsetCanonicalName
メソッドを呼び出して、正規名を設定します。 ユーザーの正規名を指定するstring値を渡します。 例えば、wblue
を指定できます。UserImpl
オブジェクトのsetGivenName
メソッドを呼び出して、指定した名前を設定します。 ユーザーの名前を指定するstring値を渡します。 例えば、Wendy
を指定できます。UserImpl
オブジェクトのsetFamilyName
メソッドを呼び出して、ファミリ名を設定します。 ユーザーの姓を指定するstring値を渡します。 例えば、Blue
を指定できます。UserImpl
オブジェクトに属するメソッドを呼び出して、他の値を設定します。 例えば、UserImpl
オブジェクトのsetLocale
メソッドを呼び出してロケール値を設定できます。
AEM Forms追加へのユーザー。
DirectoryManagerServiceClient
オブジェクトのcreateLocalUser
メソッドを呼び出し、次の値を渡します。
UserImpl
オブジェクトcreateLocalUser
メソッドは、ローカルユーザー識別子の値を指定する文字列値を返します。
ユーザーが追加されたことを確認します。
PrincipalSearchFilter
オブジェクトを作成します。PrincipalSearchFilter
オブジェクトのsetUserId
メソッドを呼び出して、ユーザー識別子の値を設定します。 ユーザー識別子の値を表すstring値を渡します。DirectoryManagerServiceClient
オブジェクトのfindPrincipals
メソッドを呼び出し、PrincipalSearchFilter
オブジェクトを渡します。 このメソッドは、java.util.List
インスタンスを返します。各要素はUser
オブジェクトです。 java.util.List
インスタンスを繰り返し実行し、ユーザーを探します。関連トピック
クイック開始(SOAPモード):Java APIを使用したユーザの追加
Directory Manager Service API(Webサービス)追加を使用したユーザー:
プロジェクトファイルを含めます。
MTOMを使用するMicrosoft .NETプロジェクトを作成します。 サービス参照に次のWSDL定義を使用していることを確認します。http://localhost:8080/soap/services/DirectoryManagerService?WSDL&lc_version=9.0.1
.
localhost
を、AEM FormsをホストするサーバーのIPアドレスに置き換えます。
DirectoryManagerServiceクライアントを作成します。
DirectoryManagerServiceClient
オブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。
System.ServiceModel.EndpointAddress
コンストラクターを使用してDirectoryManagerServiceClient.Endpoint.Address
オブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例: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
に割り当てます。DirectoryManagerServiceClient.ClientCredentials.UserName.Password
に割り当てます。HttpClientCredentialType.Basic
をフィールドBasicHttpBindingSecurity.Transport.ClientCredentialType
に割り当てます。BasicHttpSecurityMode.TransportCredentialOnly
をフィールドBasicHttpBindingSecurity.Security.Mode
に割り当てます。ユーザー情報を定義します。
UserImpl
オブジェクトを作成します。UserImpl
オブジェクトのdomainName
フィールドに文字列値を割り当てて、デメイン名を設定します。UserImpl
オブジェクトのprincipalType
フィールドに文字列値を割り当てます。 例えば、USER
を指定できます。UserImpl
オブジェクトのuserid
フィールドに文字列値を割り当てて、ユーザー識別子の値を設定します。UserImpl
オブジェクトのcanonicalName
フィールドに文字列値を割り当てて、正規名の値を設定します。UserImpl
オブジェクトのgivenName
フィールドに文字列値を割り当てて、指定した名前値を設定します。UserImpl
オブジェクトのfamilyName
フィールドに文字列値を割り当てて、ファミリ名の値を設定します。AEM Forms追加へのユーザー。
DirectoryManagerServiceClient
オブジェクトのcreateLocalUser
メソッドを呼び出し、次の値を渡します。
UserImpl
オブジェクトcreateLocalUser
メソッドは、ローカルユーザー識別子の値を指定する文字列値を返します。
ユーザーが追加されたことを確認します。
PrincipalSearchFilter
オブジェクトを作成します。PrincipalSearchFilter
オブジェクトのuserId
フィールドに割り当てます。DirectoryManagerServiceClient
オブジェクトのfindPrincipals
メソッドを呼び出し、PrincipalSearchFilter
オブジェクトを渡します。 このメソッドは、MyArrayOfUser
コレクションオブジェクトを返します。各要素はUser
オブジェクトです。 MyArrayOfUser
コレクションを繰り返し実行し、ユーザーを探します。関連トピック
Directory Manager Service API(JavaおよびWebサービス)を使用すると、ユーザーをAEM Formsからプログラム的に削除できます。 ユーザーを削除すると、そのユーザーは、ユーザーを必要とするサービス操作を実行するために使用できなくなります。 例えば、削除したタスクにユーザーを割り当てることはできません。
ユーザーを削除するには、次の手順を実行します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを含めます。
DirectoryManagerServiceクライアントの作成
プログラムでDirectory Manager Service API操作を実行する前に、Directory Managerサービスクライアントを作成します。
削除するユーザーの指定
ユーザーの識別子の値を使用して、削除するユーザーを指定できます。
ユーザーをAEM Formsから削除します
ユーザーを削除するには、DirectoryManagerServiceClient
オブジェクトのdeleteLocalUser
メソッドを呼び出します。
関連トピック
Directory Manager Service API(Java)を使用してユーザーを削除します。
プロジェクトファイルを含めます。
Javaプロジェクトのクラスパスに、adobe-usermanager-client.jarなどのクライアントJARファイルを含めます。
DirectoryManagerServiceクライアントを作成します。
コンストラクターを使用し、接続プロパティを含むServiceClientFactory
オブジェクトを渡して、DirectoryManagerServiceClient
オブジェクトを作成します。
削除するユーザーを指定します。
PrincipalSearchFilter
オブジェクトを作成します。PrincipalSearchFilter
オブジェクトのsetUserId
メソッドを呼び出して、ユーザー識別子の値を設定します。 ユーザー識別子の値を表すstring値を渡します。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を使用したユーザーの削除
クイック開始(SOAPモード):Java APIを使用したユーザーの削除
Directory Manager Service API(Webサービス)を使用してユーザーを削除します。
プロジェクトファイルを含めます。
Javaプロジェクトのクラスパスに、adobe-usermanager-client.jarなどのクライアントJARファイルを含めます。
DirectoryManagerServiceクライアントを作成します。
DirectoryManagerServiceClient
オブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。
System.ServiceModel.EndpointAddress
コンストラクターを使用してDirectoryManagerServiceClient.Endpoint.Address
オブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例: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
に割り当てます。DirectoryManagerServiceClient.ClientCredentials.UserName.Password
に割り当てます。HttpClientCredentialType.Basic
をフィールドBasicHttpBindingSecurity.Transport.ClientCredentialType
に割り当てます。BasicHttpSecurityMode.TransportCredentialOnly
をフィールドBasicHttpBindingSecurity.Security.Mode
に割り当てます。削除するユーザーを指定します。
PrincipalSearchFilter
オブジェクトを作成します。PrincipalSearchFilter
オブジェクトのuserId
フィールドに文字列値を割り当てて、ユーザー識別子の値を設定します。DirectoryManagerServiceClient
オブジェクトのfindPrincipals
メソッドを呼び出し、PrincipalSearchFilter
オブジェクトを渡します。 このメソッドは、MyArrayOfUser
コレクションオブジェクトを返します。各要素はUser
オブジェクトです。 MyArrayOfUser
コレクションを繰り返し実行し、ユーザーを探します。 MyArrayOfUser
コレクションオブジェクトから取得したUser
オブジェクトは、ユーザーの削除に使用されます。ユーザーをAEM Formsから削除します。
User
オブジェクトのoid
フィールド値をDirectoryManagerServiceClient
オブジェクトのdeleteLocalUser
メソッドに渡して、ユーザーを削除します。
関連トピック
Directory Manager Service API(JavaおよびWebサービス)を使用して、AEM Formsグループをプログラムで作成できます。 グループを作成した後、そのグループを使用して、グループを必要とするサービス操作を実行できます。 例えば、ユーザーを新しいグループに割り当てることができます。 (「ユーザーとグループの管理」を参照)。
グループを作成するには、次の手順を実行します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。
次のJARファイルをプロジェクトのクラスパスに追加する必要があります。
これらのJARファイルの場所について詳しくは、「AEM FormsJavaライブラリファイルを含める」を参照してください。
DirectoryManagerServiceクライアントの作成
プログラムを使用してDirectory Managerサービスの操作を実行する前に、Directory Manager Service APIクライアントを作成します。
グループが存在するかどうかの確認
グループを作成する場合は、そのグループが同じドメインに存在しないことを確認します。 つまり、2つのグループが同じドメイン内で同じ名前を持つことはできません。 このタスクを実行するには、検索を実行し、2つの値に基づいて検索結果をフィルタリングします。 プリンシパルタイプをcom.adobe.idp.um.api.infomodel.Principal.PRINCIPALTYPE_GROUP
に設定し、グループのみが返されるようにします。 また、ドメイン名を必ず指定してください。
グループの作成
グループがドメインに存在しないと判断したら、グループを作成し、次の属性を指定します。
グループに対するアクションの実行
グループを作成した後、そのグループを使用してアクションを実行できます。 例えば、ユーザーをグループに追加できます。 ユーザーをグループに追加するには、ユーザーとグループの両方の固有な識別子の値を取得します。 これらの値をaddPrincipalToLocalGroup
メソッドに渡します。
関連トピック
Directory Manager Service API(Java)を使用してグループを作成します。
プロジェクトファイルを含めます。
Javaプロジェクトのクラスパスに、adobe-usermanager-client.jarなどのクライアントJARファイルを含めます。
DirectoryManagerServiceクライアントを作成します。
コンストラクターを使用し、接続プロパティを含むServiceClientFactory
オブジェクトを渡して、DirectoryManagerServiceClient
オブジェクトを作成します。
グループが存在するかどうかを確認します。
PrincipalSearchFilter
オブジェクトを作成します。PrincipalSearchFilter
オブジェクトのsetPrincipalType
オブジェクトを呼び出して、プリンシパルタイプを設定します。 値com.adobe.idp.um.api.infomodel.Principal.PRINCIPALTYPE_GROUP
を渡します。PrincipalSearchFilter
オブジェクトのsetSpecificDomainName
オブジェクトを呼び出して、ドメインを設定します。 ドメイン名を指定するstring値を渡します。DirectoryManagerServiceClient
オブジェクトのfindPrincipals
メソッドを呼び出します(プリンシパルはグループにすることができます)。 プリンシパルタイプとドメイン名を指定するPrincipalSearchFilter
オブジェクトを渡します。 このメソッドは、java.util.List
インスタンスを返します。各要素はGroup
インスタンスです。 各グループインスタンスは、PrincipalSearchFilter
オブジェクトを使用して指定されたフィルターに準拠します。java.util.List
インスタンスを反復します。 各要素について、グループ名を取得します。 グループ名が新しいグループ名と等しくないことを確認します。グループを作成します。
Group
オブジェクトのsetCommonName
メソッドを呼び出し、グループ名を指定する文字列値を渡します。Group
オブジェクトのsetDescription
メソッドを呼び出し、グループの説明を指定する文字列値を渡します。Group
オブジェクトのsetDomainName
メソッドを呼び出し、ドメイン名を指定する文字列値を渡します。DirectoryManagerServiceClient
オブジェクトのcreateLocalGroup
メソッドを呼び出し、Group
インスタンスを渡します。createLocalUser
メソッドは、ローカルユーザー識別子の値を指定する文字列値を返します。
グループに対してアクションを実行します。
PrincipalSearchFilter
オブジェクトを作成します。PrincipalSearchFilter
オブジェクトのsetUserId
メソッドを呼び出して、ユーザー識別子の値を設定します。 ユーザー識別子の値を表すstring値を渡します。DirectoryManagerServiceClient
オブジェクトのfindPrincipals
メソッドを呼び出し、PrincipalSearchFilter
オブジェクトを渡します。 このメソッドは、java.util.List
インスタンスを返します。各要素はUser
オブジェクトです。 java.util.List
インスタンスを繰り返し実行し、ユーザーを探します。addPrincipalToLocalGroup
メソッドを呼び出して、グループにユーザーを追加します。 DirectoryManagerServiceClient
User
オブジェクトのgetOid
メソッドの戻り値を渡します。 Group
オブジェクトのgetOid
メソッドの戻り値を渡します(新しいグループを表すGroup
インスタンスを使用します)。関連トピック
このトピックでは、(Java)を使用して、ドメイン、ユーザー、グループをプログラムによって割り当て、削除、クエリする方法について説明します。
ドメインを設定する場合、グループおよびユーザーの固有な識別子を設定する必要があります。 選択する属性は、LDAP環境内で一意である必要があるだけでなく、不変である必要があり、ディレクトリ内で変更されません。 また、この属性は単純な文字列データ型である必要があります(Active Directory 2000/2003で現在許可されている唯一の例外は"objectsid"
で、バイナリ値です)。 例えば、Novell eDirectory属性"GUID"
は、単純な文字列データ型ではないので、機能しません。
"objectsid"
を使用します。"nsuniqueid"
を使用します。LDAPディレクトリの同期の進行中に複数のローカルユーザーおよびグループを作成することは、サポートされていません。 この処理を試みると、エラーが発生します。
ユーザーおよびグループを管理するには、次の手順を実行します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めます。
DirectoryManagerServiceクライアントの作成
プログラムを使用してDirectory Managerサービスの操作を実行する前に、Directory Managerサービスクライアントを作成する必要があります。 Java APIを使用すると、DirectoryManagerServiceClient
オブジェクトを作成することで実現できます。 WebサービスAPIを使用すると、DirectoryManagerServiceService
オブジェクトを作成することで実現できます。
適切なユーザー操作またはグループ操作を呼び出します
サービスクライアントを作成したら、ユーザー管理操作またはグループ管理操作を呼び出すことができます。 サービスクライアントでは、ドメイン、ユーザー、グループの割り当て、削除、クエリが可能です。 ディレクトリプリンシパルまたはローカルプリンシパルをローカルグループに追加することは可能ですが、ローカルプリンシパルをディレクトリグループに追加することはできません。
関連トピック
(Java)を使用してユーザー、グループおよびドメインをプログラムで管理するには、次のタスクを実行します。
プロジェクトファイルを含めます。
Javaプロジェクトのクラスパスに、adobe-usermanager-client.jarなどのクライアントJARファイルを含めます。 これらのファイルの場所については、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
メソッドを呼び出し、グループの識別子を渡します。
関連トピック
Directory Manager Service API(Webサービス)を使用してユーザー、グループ、ドメインをプログラムで管理するには、次のタスクを実行します。
プロジェクトファイルを含めます。
DirectoryManagerServiceクライアントを作成します。
プロキシクラスのコンストラクターを使用してDirectoryManagerServiceService
オブジェクトを作成します。
適切なユーザー操作またはグループ操作を呼び出します。
ユーザーまたはグループを検索するには、DirectoryManagerServiceService
オブジェクトのいずれかのメソッドを呼び出してプリンシパルを検索します(プリンシパルはユーザーまたはグループになる可能性があるため)。 次の例では、findPrincipalsWithFilter
メソッドが検索フィルター(PrincipalSearchFilter
オブジェクト)を使用して呼び出されます。 PrincipalSearchFilter
オブジェクトを使用する場合、ローカルプリンシパルは、isLocal
プロパティがtrue
に設定されている場合にのみ返されます。 この動作は、Java APIで発生する動作とは異なります。
検索フィルターで(PrincipalSearchFilter.resultsMax
フィールドを通して)検索結果の最大数が指定されていない場合、最大1000個の結果が返されます。 これは、Java APIを使用した場合とは異なる動作です。Java APIの結果数はデフォルトの最大数10です。 また、findGroupMembers
などの検索方法では、検索フィルターで検索結果の最大数が指定されていない限り(例えばGroupMembershipSearchFilter.resultsMax
フィールドを通して)結果を出すことはありません。 これは、GenericSearchFilter
クラスから継承するすべての検索フィルターに適用されます。 詳しくは、AEM FormsAPIリファレンスを参照してください。
この場合の戻り値はPrincipal
オブジェクトを含むobject[]
なので、結果を繰り返し処理し、Principal
オブジェクトをUser
またはGroup
オブジェクトにキャストします。
結果のUser
またはGroup
オブジェクト(両方ともPrincipal
インターフェイスから継承)を使用して、ワークフローで必要な情報を取得します。 例えば、ドメイン名と正規名の値を組み合わせて、プリンシパルを一意に識別します。 これらは、Principal
オブジェクトのdomainName
フィールドとcanonicalName
フィールドをそれぞれ呼び出して取得されます。
ローカルユーザーを削除するには、DirectoryManagerServiceService
オブジェクトのdeleteLocalUser
メソッドを呼び出し、ユーザーの識別子を渡します。
ローカルグループを削除するには、DirectoryManagerServiceService
オブジェクトのdeleteLocalGroup
メソッドを呼び出し、グループの識別子を渡します。
関連トピック
このトピックでは、Authorization Manager Service API (Java)を使用して、ロールと権限をプログラムによって割り当て、削除、決定する方法について説明します。
AEM Formsでは、ロールは、1つ以上のシステムレベルのリソースにアクセスするための権限のグループです。 これらの権限は、User Managementを通じて作成され、サービスコンポーネントによって適用されます。 例えば、管理者が「ポリシーセット作成者」のロールをユーザーのグループに割り当てることができます。 その後、Rights Managementは、そのロールを持つグループのユーザーに、管理コンソールからポリシーセットを作成することを許可します。
役割には2種類あります。デフォルトの役割とカスタムの役割 デフォルトの役割(システムの役割)は、既にAEM Formsに常駐しています。 デフォルトのロールは、管理者が削除または変更できない場合があるので変更できません。 その後、管理者が作成したカスタムロールは、変更または削除できるので、変更できません。
ロールを使用すると、権限の管理が容易になります。 ロールがプリンシパルに割り当てられると、一連の権限がそのプリンシパルに自動的に割り当てられ、プリンシパルに関する特定のアクセス関連の決定はすべて、割り当てられた権限の全体セットに基づいて行われます。
ロールと権限を管理するには、次の手順を実行します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めます。
AuthorizationManagerServiceクライアントの作成
User Management AuthorizationManagerService操作をプログラムで実行する前に、AuthorizationManagerServiceクライアントを作成する必要があります。 Java APIを使用すると、AuthorizationManagerServiceClient
オブジェクトを作成することで実現できます。
適切なロールまたは権限操作を呼び出します
サービスクライアントを作成したら、ロール操作または権限操作を呼び出すことができます。 サービスクライアントでは、ロールと権限の割り当て、削除、および決定を行うことができます。
関連トピック
Authorization Manager Service API (Java)を使用してロールと権限を管理するには、次のタスクを実行します。
プロジェクトファイルを含めます。
Javaプロジェクトのクラスパスに、adobe-usermanager-client.jarなどのクライアントJARファイルを含めます。
AuthorizationManagerServiceクライアントを作成します。
コンストラクターを使用し、接続プロパティを含むServiceClientFactory
オブジェクトを渡して、AuthorizationManagerServiceClient
オブジェクトを作成します。
適切なロールまたは権限操作を呼び出します。
プリンシパルにロールを割り当てるには、AuthorizationManagerServiceClient
オブジェクトのassignRole
メソッドを呼び出し、次の値を渡します。
java.lang.String
オブジェクトjava.lang.String
オブジェクトの配列です。プリンシパルからロールを削除するには、AuthorizationManagerServiceClient
オブジェクトのunassignRole
メソッドを呼び出し、次の値を渡します。
java.lang.String
オブジェクト。java.lang.String
オブジェクトの配列です。関連トピック
クイック開始(SOAPモード):Java APIを使用したロールと権限の管理
Authorization Manager Service API (Webサービス)を使用して、ロールと権限を管理します。
プロジェクトファイルを含めます。
MTOMを使用するMicrosoft .NETプロジェクトを作成します。 次のWSDL定義を使用していることを確認します。http://localhost:8080/soap/services/AuthorizationManagerService?WSDL&lc_version=9.0.1
.
localhost
を、AEM FormsをホストするサーバーのIPアドレスに置き換えます。
AuthorizationManagerServiceクライアントを作成します。
AuthorizationManagerServiceClient
オブジェクトを作成するには、そのオブジェクトのデフォルトのコンストラクタを使用します。
System.ServiceModel.EndpointAddress
コンストラクターを使用してAuthorizationManagerServiceClient.Endpoint.Address
オブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例: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
に割り当てます。AuthorizationManagerServiceClient.ClientCredentials.UserName.Password
に割り当てます。HttpClientCredentialType.Basic
をフィールドBasicHttpBindingSecurity.Transport.ClientCredentialType
に割り当てます。BasicHttpSecurityMode.TransportCredentialOnly
をフィールドBasicHttpBindingSecurity.Security.Mode
に割り当てます。適切なロールまたは権限操作を呼び出します。
プリンシパルにロールを割り当てるには、AuthorizationManagerServiceClient
オブジェクトのassignRole
メソッドを呼び出し、次の値を渡します。
string
オブジェクトMyArrayOf_xsd_string
オブジェクト。プリンシパルからロールを削除するには、AuthorizationManagerServiceService
オブジェクトのunassignRole
メソッドを呼び出し、次の値を渡します。
string
オブジェクト。string
オブジェクトの配列です。関連トピック
このトピックでは、Authentication Manager Service API(Java)を使用して、クライアントアプリケーションでユーザーをプログラム的に認証する方法について説明します。
ユーザー認証は、安全なデータを格納するエンタープライズデータベースや他のエンタープライズリポジトリとのやり取りに必要な場合があります。
例えば、ユーザーがユーザー名とパスワードをWebページに入力し、値をFormsをホストするJ2EEアプリケーションサーバーに送信するシナリオを考えてみましょう。 Formsのカスタムアプリケーションは、Authentication Managerサービスでユーザーを認証できます。
認証が成功した場合、アプリケーションは、保護されたエンタープライズデータベースにアクセスします。 それ以外の場合は、許可されたユーザーではないことを示すメッセージがユーザーに送信されます。
次の図に、アプリケーションのロジックのフローを示します。
次の表に、この図の手順を示します
ステップ |
説明 |
---|---|
1 |
ユーザはウェブサイトにアクセスし、ユーザ名とパスワードを指定する。 この情報は、AEM FormsをホストするJ2EEアプリケーションサーバーに送信されます。 |
2 |
ユーザー資格情報はAuthentication Managerサービスで認証されます。 ユーザーの資格情報が有効な場合、ワークフローは手順3に進みます。 それ以外の場合は、許可されたユーザーではないことを示すメッセージがユーザーに送信されます。 |
1 |
ユーザ情報とフォームデザインは、保護された企業データベースから検索される。 |
4 |
ユーザー情報がフォームデザインとマージされ、フォームがユーザーにレンダリングされます。 |
プログラムによってユーザーを認証するには、次の手順を実行します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めます。
AuthenticationManagerServiceクライアントの作成
プログラムでユーザーを認証する前に、AuthenticationManagerServiceクライアントを作成する必要があります。 Java APIを使用する場合は、AuthenticationManagerServiceClient
オブジェクトを作成します。
認証操作の呼び出し
サービスクライアントを作成したら、認証操作を呼び出すことができます。 この操作には、ユーザー名やパスワードなど、ユーザーに関する情報が必要です。 ユーザーが認証されない場合は、例外が発生します。
認証コンテキストの取得
ユーザーを認証すると、認証済みユーザーに基づいてコンテキストを作成できます。 その後、コンテンツを使用して別のAEM Formsサービスを呼び出すことができます。 例えば、コンテキストを使用してEncryptionServiceClient
を作成し、PDFドキュメントをパスワードで暗号化できます。 認証されたユーザーに、AEM Formsサービスの呼び出しに必要なServices User
というロールがあることを確認してください。
関連トピック
Authentication Manager Service API(Java)を使用してユーザーを認証します。
プロジェクトファイルを含めます。
Javaプロジェクトのクラスパスに、adobe-usermanager-client.jarなどのクライアントJARファイルを含めます。
AuthenticationManagerServicesクライアントを作成します。
コンストラクターを使用し、接続プロパティを含むServiceClientFactory
オブジェクトを渡して、AuthenticationManagerServiceClient
オブジェクトを作成します。
認証操作を呼び出します。
AuthenticationManagerServiceClient
オブジェクトのauthenticate
メソッドを呼び出し、次の値を渡します。
java.lang.String
オブジェクト。byte[]
オブジェクト)。 byte[]
オブジェクトを取得するには、java.lang.String
オブジェクトのgetBytes
メソッドを呼び出します。authenticateメソッドは、認証済みユーザーに関する情報を含むAuthResult
オブジェクトを返します。
認証コンテキストを取得します。
ServiceClientFactory
オブジェクトのgetContext
メソッドを呼び出します。これにより、Context
オブジェクトが返されます。
次に、Context
オブジェクトのinitPrincipal
メソッドを呼び出し、AuthResult
を渡します。
Authentication Manager Service API(Webサービス)を使用してユーザーを認証します。
プロジェクトファイルを含めます。
AuthenticationManagerServiceクライアントを作成します。
プロキシクラスのコンストラクターを使用してAuthenticationManagerServiceService
オブジェクトを作成します。
認証操作を呼び出します。
AuthenticationManagerServiceClient
オブジェクトのauthenticate
メソッドを呼び出し、次の値を渡します。
string
オブジェクトbyte[]
オブジェクト)。 次の例に示すロジックを使用して、パスワードを含むstring
オブジェクトをbyte[]
配列に変換することで、byte[]
オブジェクトを取得できます。AuthResult
オブジェクトで、ユーザーに関する情報の取得に使用できます。 次の例では、ユーザーの情報を取得するために、最初にAuthResult
オブジェクトのauthenticatedUser
フィールドを取得し、次に結果のUser
オブジェクトのcanonicalName
フィールドとdomainName
フィールドを取得します。関連トピック
User Management APIを使用して、プログラムによってユーザーを同期できます。 ユーザーを同期すると、ユーザーリポジトリ内のユーザーデータでAEM Formsを更新します。 例えば、新しいユーザーをユーザーリポジトリに追加するとします。 同期操作を実行すると、新しいユーザーがAEM formsユーザーになります。 また、ユーザーリポジトリに存在しなくなったユーザーは、AEM Formsから削除されます。
次の図は、AEM Formsがユーザー・リポジトリと同期していることを示しています。
次の表に、この図の手順を示します
ステップ |
説明 |
---|---|
1 |
AEM Formsが同期操作を実行するクライアントアプリケーション要求。 |
2 |
AEM Formsが同期操作を実行します。 |
3 |
ユーザー情報が更新されます。 |
4 |
ユーザは、更新されたユーザ情報を表示することができる。 |
プログラムによってユーザーを同期するには、次の手順を実行します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めます。
UserManagerUtilServiceClientclientの作成
プログラムによってユーザーを同期する前に、UserManagerUtilServiceClient
オブジェクトを作成する必要があります。
エンタープライズドメインの指定
User Management APIを使用して同期操作を実行する前に、ユーザーが属するエンタープライズドメインを指定します。 エンタープライズドメインは1つ以上指定できます。 プログラムによって同期操作を実行する前に、管理コンソールを使用してエンタープライズドメインを設定する必要があります。 (管理ヘルプを参照)。
同期操作の呼び出し
1つ以上のエンタープライズドメインを指定した後、同期操作を実行できます。 この操作の実行に要する時間は、ユーザーリポジトリ内のユーザーレコードの数によって異なります。
同期操作が完了したかどうかを確認する
プログラムで同期操作を実行した後、操作が完了したかどうかを判断できます。
関連トピック
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
を渡します。
関連トピック