管理用户

本文档中的示例和示例仅适用于JEE环境中的AEM Forms。

关于用户管理

您可以使用用户管理API创建可管理角色、权限和承担者(可以是用户或组)以及验证用户的客户端应用程序。 用户管理API包含以下AEM Forms API:

  • 目录管理器服务API
  • Authentication Manager服务API
  • 授权管理器服务API

用户管理允许您分配、删除和确定角色和权限。 它还允许您分配、删除和查询域、用户和组。 最后,您可以使用用户管理来验证用户。

添加用户中,您将了解如何以编程方式添加用户。 本节使用目录管理器服务API。

删除用户中,您将了解如何以编程方式删除用户。 本节使用目录管理器服务API。

管理用户和组中,您将了解本地用户和目录用户之间的差异,并查看有关如何使用Java和Web服务API以编程方式管理用户和组的示例。 本节使用目录管理器服务API。

管理角色和权限中,您将了解系统角色和权限以及您可以以编程方式增强这些角色和权限的方法,并查看有关如何使用Java和Web服务API以编程方式管理角色和权限的示例。 本节同时使用目录管理器服务API和授权管理器服务API。

Authenticating Users中,您将看到如何使用Java和Web服务API以编程方式验证用户的示例。 本节使用授权管理器服务API。

了解身份验证过程

用户管理提供内置的身份验证功能,还允许您将其与您自己的身份验证提供程序连接。 当用户管理收到验证请求(例如,用户尝试登录)时,它会将用户信息传递给验证提供者以进行验证。 用户管理在验证用户后,会从验证提供程序接收结果。

下图显示了尝试登录的最终用户、用户管理和身份验证提供程序之间的交互。

mu_mu_umauth_process

下表描述了身份验证过程的每个步骤。

步骤

描述

1

用户尝试登录到调用用户管理的服务。 用户指定用户名和密码。

2

用户管理会将用户名和密码以及配置信息发送给身份验证提供程序。

3

验证提供程序连接到用户存储并验证用户。

4

身份验证提供程序将结果返回给用户管理。

5

用户管理允许用户登录或拒绝访问产品。

注意

如果服务器时区与客户端时区不同,则在WebSphere应用程序服务器群集上使用.NET客户端在本机SOAP堆栈上使用AEM Forms的WSDL生成PDF服务时,可能会出现以下用户管理身份验证错误:

[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).

了解目录管理

用户管理与支持与LDAP目录连接的目录服务提供程序(DirectoryManagerService)一起打包。 如果贵组织使用非LDAP存储库来存储用户记录,则可以创建您自己的目录服务提供程序,以与您的存储库一起使用。

目录服务提供者应用户管理的请求从用户存储中检索记录。 用户管理会定期在数据库中缓存用户和组记录以提高性能。

目录服务提供程序可用于将用户管理数据库与用户存储同步。 此步骤可确保所有用户目录信息以及所有用户和组记录都是最新的。

此外, DirectoryManagerService还使您能够创建和管理域。 域定义不同的用户群。 域的边界通常根据组织的结构方式或用户存储的设置来定义。 用户管理域提供身份验证提供程序和目录服务提供程序使用的配置设置。

在用户管理导出的配置XML中,属性值为Domains的根节点包含为用户管理定义的每个域的XML元素。 这些元素中的每个元素都包含其他元素,这些元素定义与特定服务提供商关联的域的各个方面。

了解objectSID值

使用Active Directory时,请务必了解objectSID值不是跨多个域的唯一属性。 此值存储对象的安全标识符。 在多域环境(例如,域树)中,objectSID值可能不同。

如果将对象从一个Active Directory域移动到另一个域,则objectSID值会发生更改。 某些对象在域中的任意位置具有相同的objectSID值。 例如,BUILDIN\Administrators、BUILDIN\Power Users等组的objectSID值与域无关。 这些objectSID值是众所周知的。

添加用户

您可以使用目录管理器服务API(Java和Web服务)以编程方式将用户添加到AEM Forms。 添加用户后,在执行需要用户的服务操作时,可以使用该用户。 例如,您可以为新用户分配任务。

步骤的摘要

要添加用户,请执行以下步骤:

  1. 包括项目文件。
  2. 创建DirectoryManagerService客户端。
  3. 定义用户信息。
  4. 将用户添加到AEM Forms。
  5. 确认已添加用户。

包含项目文件

在开发项目中包含必需的文件。 如果您使用Java创建客户端应用程序,请包含必需的JAR文件。 如果您使用的是Web服务,请包含代理文件。

创建DirectoryManagerService客户端

在以编程方式执行目录管理器服务操作之前,请创建目录管理器服务API客户端。

定义用户信息

使用目录管理器服务API添加新用户时,请为该用户定义信息。 通常,在添加新用户时,需定义以下值:

  • 域名:用户所属的域(例如 DefaultDom)。
  • 用户标识符值:用户的标识符值(例如, wblue)。
  • 主类型:用户类型(例如,您可以指定 USER)
  • 给定名称:用户的给定名称(例如 Wendy)。
  • 姓氏:用户的姓氏(例如, Blue)
  • 区域设置:用户的区域设置信息。

将用户添加到AEM Forms

定义用户信息后,可以将用户添加到AEM Forms。 要添加用户,请调用DirectoryManagerServiceClient对象的createLocalUser方法。

确认已添加用户

您可以验证是否已添加用户,以确保未出现任何问题。 使用用户标识符值查找新用户。

另请参阅

使用Java API添加用户

使用Web服务API添加用户

包括AEM Forms Java库文件

设置连接属性

删除用户

使用Java API添加用户

使用目录管理器服务API(Java)添加用户:

  1. 包括项目文件。

    在Java项目的类路径中包含客户端JAR文件,如adobe-usermanager-client.jar。

  2. 创建DirectoryManagerServices客户端。

    使用其构造函数创建DirectoryManagerServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。

  3. 定义用户信息。

    • 使用UserImpl对象的构造函数创建对象。
    • 通过调用UserImpl对象的setDomainName方法来设置demain名称。 传递指定域名的字符串值。
    • 通过调用UserImpl对象的setPrincipalType方法来设置主类型。 传递指定用户类型的字符串值。 例如,您可以指定USER
    • 通过调用UserImpl对象的setUserid方法来设置用户标识符值。 传递指定用户标识符值的字符串值。 例如,您可以指定wblue
    • 通过调用UserImpl对象的setCanonicalName方法来设置规范名称。 传递指定用户规范名称的字符串值。 例如,您可以指定wblue
    • 通过调用UserImpl对象的setGivenName方法来设置给定名称。 传递指定用户给定名称的字符串值。 例如,您可以指定Wendy
    • 通过调用UserImpl对象的setFamilyName方法来设置族名。 传递指定用户族名的字符串值。 例如,您可以指定Blue
    注意

    调用属于UserImpl对象的方法以设置其他值。 例如,可以通过调用UserImpl对象的setLocale方法来设置区域设置值。

  4. 将用户添加到AEM Forms。

    调用DirectoryManagerServiceClient对象的createLocalUser方法并传递以下值:

    • 表示新用户的UserImpl对象
    • 表示用户密码的字符串值

    createLocalUser方法会返回一个指定本地用户标识符值的字符串值。

  5. 确认已添加用户。

    • 使用PrincipalSearchFilter对象的构造函数创建对象。
    • 通过调用PrincipalSearchFilter对象的setUserId方法来设置用户标识符值。 传递表示用户标识符值的字符串值。
    • 调用DirectoryManagerServiceClient对象的findPrincipals方法并传递PrincipalSearchFilter对象。 此方法返回一个java.util.List实例,其中每个元素都是一个User对象。 遍历java.util.List实例以找到用户。

另请参阅

步骤摘要

快速入门(SOAP模式):使用Java API添加用户

包括AEM Forms Java库文件

设置连接属性

使用Web服务API添加用户

使用目录管理器服务API(Web服务)添加用户:

  1. 包括项目文件。

    创建使用MTOM的Microsoft .NET项目。 确保为服务引用使用以下WSDL定义:http://localhost:8080/soap/services/DirectoryManagerService?WSDL&lc_version=9.0.1

    注意

    localhost替换为托管AEM Forms的服务器的IP地址。

  2. 创建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身份验证:

      • 将AEM表单用户名分配给字段DirectoryManagerServiceClient.ClientCredentials.UserName.UserName
      • 为字段DirectoryManagerServiceClient.ClientCredentials.UserName.Password分配相应的密码值。
      • 将常量值HttpClientCredentialType.Basic分配给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 将常量值BasicHttpSecurityMode.TransportCredentialOnly分配给字段BasicHttpBindingSecurity.Security.Mode
  3. 定义用户信息。

    • 使用UserImpl对象的构造函数创建对象。
    • 通过为UserImpl对象的domainName字段分配字符串值来设置维度名称。
    • 通过为UserImpl对象的principalType字段分配字符串值来设置主体类型。 例如,您可以指定USER
    • 通过为UserImpl对象的userid字段分配字符串值来设置用户标识符值。
    • 通过为UserImpl对象的canonicalName字段分配字符串值来设置规范名称值。
    • 通过为UserImpl对象的givenName字段分配字符串值来设置给定的名称值。
    • 通过为UserImpl对象的familyName字段分配字符串值来设置族名称值。
  4. 将用户添加到AEM Forms。

    调用DirectoryManagerServiceClient对象的createLocalUser方法并传递以下值:

    • 表示新用户的UserImpl对象
    • 表示用户密码的字符串值

    createLocalUser方法会返回一个指定本地用户标识符值的字符串值。

  5. 确认已添加用户。

    • 使用PrincipalSearchFilter对象的构造函数创建对象。
    • 通过将表示用户标识符值的字符串值分配给PrincipalSearchFilter对象的userId字段来设置用户的用户标识符值。
    • 调用DirectoryManagerServiceClient对象的findPrincipals方法并传递PrincipalSearchFilter对象。 此方法返回一个MyArrayOfUser集合对象,其中每个元素都是一个User对象。 遍历MyArrayOfUser集合以找到用户。

另请参阅

步骤摘要

使用MTOM调用AEM Forms

使用SwaRef调用AEM Forms

删除用户

您可以使用目录管理器服务API(Java和Web服务)以编程方式从AEM Forms中删除用户。 删除用户后,无法再使用该用户执行需要用户的服务操作。 例如,您无法将任务分配给已删除的用户。

步骤的摘要

要删除用户,请执行以下步骤:

  1. 包括项目文件。
  2. 创建DirectoryManagerService客户端。
  3. 指定要删除的用户。
  4. 从AEM Forms中删除用户。

包含项目文件

在开发项目中包含必需的文件。 如果您使用Java创建客户端应用程序,请包含必需的JAR文件。 如果您使用的是Web服务,请包含代理文件。

创建DirectoryManagerService客户端

在以编程方式执行目录管理器服务API操作之前,请创建目录管理器服务客户端。

指定要删除的用户

您可以使用用户的标识符值指定要删除的用户。

从AEM Forms中删除用户

要删除用户,请调用DirectoryManagerServiceClient对象的deleteLocalUser方法。

另请参阅

使用Java API删除用户

使用Web服务API删除用户

包括AEM Forms Java库文件

设置连接属性

添加用户

使用Java API删除用户

使用目录管理器服务API(Java)删除用户:

  1. 包括项目文件。

    在Java项目的类路径中包含客户端JAR文件,如adobe-usermanager-client.jar。

  2. 创建DirectoryManagerService客户端。

    使用其构造函数创建DirectoryManagerServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。

  3. 指定要删除的用户。

    • 使用PrincipalSearchFilter对象的构造函数创建对象。
    • 通过调用PrincipalSearchFilter对象的setUserId方法来设置用户标识符值。 传递表示用户标识符值的字符串值。
    • 调用DirectoryManagerServiceClient对象的findPrincipals方法并传递PrincipalSearchFilter对象。 此方法返回一个java.util.List实例,其中每个元素都是一个User对象。 遍历java.util.List实例以找到要删除的用户。
  4. 从AEM Forms中删除用户。

    调用DirectoryManagerServiceClient对象的deleteLocalUser方法并传递User对象oid字段的值。 调用User对象的getOid方法。 使用从java.util.List实例检索的User对象。

另请参阅

步骤摘要

快速启动(EJB模式):使用Java API删除用户

快速入门(SOAP模式):使用Java API删除用户

包括AEM Forms Java库文件

设置连接属性

使用Web服务API删除用户

使用目录管理器服务API(Web服务)删除用户:

  1. 包括项目文件。

    在Java项目的类路径中包含客户端JAR文件,如adobe-usermanager-client.jar。

  2. 创建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身份验证:

      • 将AEM表单用户名分配给字段DirectoryManagerServiceClient.ClientCredentials.UserName.UserName
      • 为字段DirectoryManagerServiceClient.ClientCredentials.UserName.Password分配相应的密码值。
      • 将常量值HttpClientCredentialType.Basic分配给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 将常量值BasicHttpSecurityMode.TransportCredentialOnly分配给字段BasicHttpBindingSecurity.Security.Mode
  3. 指定要删除的用户。

    • 使用PrincipalSearchFilter对象的构造函数创建对象。
    • 通过为PrincipalSearchFilter对象的userId字段分配字符串值来设置用户标识符值。
    • 调用DirectoryManagerServiceClient对象的findPrincipals方法并传递PrincipalSearchFilter对象。 此方法返回一个MyArrayOfUser集合对象,其中每个元素都是一个User对象。 遍历MyArrayOfUser集合以找到用户。 从MyArrayOfUser集合对象检索的User对象用于删除用户。
  4. 从AEM Forms中删除用户。

    通过将User对象的oid字段值传递到DirectoryManagerServiceClient对象的deleteLocalUser方法来删除用户。

另请参阅

步骤摘要

使用MTOM调用AEM Forms

使用SwaRef调用AEM Forms

创建组

您可以使用目录管理器服务API(Java和Web服务)以编程方式创建AEM Forms组。 创建组后,可以使用该组执行需要组的服务操作。 例如,您可以将用户分配给新群组。 (请参阅管理用户和组。)

步骤的摘要

要创建组,请执行以下步骤:

  1. 包括项目文件。
  2. 创建DirectoryManagerService客户端。
  3. 确定组不存在。
  4. 创建群组。
  5. 对组执行操作。

包含项目文件

在开发项目中包含必需的文件。 如果您使用Java创建客户端应用程序,请包含必需的JAR文件。

必须将以下JAR文件添加到项目的类路径中:

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-utilities.jar(在JBoss上部署AEM Forms时必需)
  • jbossall-client.jar(在JBoss上部署AEM Forms时必需)

有关这些JAR文件位置的信息,请参阅包括AEM Forms Java库文件

创建DirectoryManagerService客户端

在以编程方式执行目录管理器服务操作之前,请创建目录管理器服务API客户端。

确定组是否存在

创建群组时,请确保该群组不存在于同一域中。 也就是说,两个组不能在同一域中具有相同的名称。 要执行此任务,请执行搜索并根据两个值筛选搜索结果。 将主体类型设置为com.adobe.idp.um.api.infomodel.Principal.PRINCIPALTYPE_GROUP以确保只返回组。 另外,请确保指定域名。

创建群组

确定域中不存在群组后,请创建群组并指定以下属性:

  • CommonName:组的名称。
  • :添加群组的域。
  • 描述:群组的描述。

对组执行操作

创建群组后,可以使用该群组执行操作。 例如,您可以将用户添加到群组。 要将用户添加到群组,请检索用户和群组的唯一标识符值。 将这些值传递给addPrincipalToLocalGroup方法。

另请参阅

使用Java API创建组

包括AEM Forms Java库文件

设置连接属性

添加用户

删除用户

使用Java API创建组

使用目录管理器服务API(Java)创建组:

  1. 包括项目文件。

    在Java项目的类路径中包含客户端JAR文件,如adobe-usermanager-client.jar。

  2. 创建DirectoryManagerService客户端。

    使用其构造函数创建DirectoryManagerServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。

  3. 确定组是否存在。

    • 使用PrincipalSearchFilter对象的构造函数创建对象。
    • 通过调用PrincipalSearchFilter对象的setPrincipalType对象来设置主类型。 传递值com.adobe.idp.um.api.infomodel.Principal.PRINCIPALTYPE_GROUP
    • 通过调用PrincipalSearchFilter对象的setSpecificDomainName对象来设置域。 传递指定域名的字符串值。
    • 要查找组,请调用DirectoryManagerServiceClient对象的findPrincipals方法(主体可以是组)。 传递指定主体类型和域名的PrincipalSearchFilter对象。 此方法会返回一个java.util.List实例,其中每个元素都是一个Group实例。 每个组实例都符合使用PrincipalSearchFilter对象指定的过滤器。
    • 遍历java.util.List实例。 对于每个元素,检索组名称。 确保组名称不等于新组名称。
  4. 创建群组。

    • 如果组不存在,请调用Group对象的setCommonName方法,并传递指定组名称的字符串值。
    • 调用Group对象的setDescription方法并传递指定组描述的字符串值。
    • 调用Group对象的setDomainName方法并传递指定域名的字符串值。
    • 调用DirectoryManagerServiceClient对象的createLocalGroup方法并传递Group实例。

    createLocalUser方法会返回一个指定本地用户标识符值的字符串值。

  5. 对组执行操作。

    • 使用PrincipalSearchFilter对象的构造函数创建对象。
    • 通过调用PrincipalSearchFilter对象的setUserId方法来设置用户标识符值。 传递表示用户标识符值的字符串值。
    • 调用DirectoryManagerServiceClient对象的findPrincipals方法并传递PrincipalSearchFilter对象。 此方法返回一个java.util.List实例,其中每个元素都是一个User对象。 遍历java.util.List实例以找到用户。
    • 通过调用DirectoryManagerServiceClient对象的addPrincipalToLocalGroup方法,将用户添加到组中。 传递User对象getOid方法的返回值。 传递Group对象getOid方法的返回值(使用表示新组的Group实例)。

另请参阅

步骤摘要

包括AEM Forms Java库文件

设置连接属性

管理用户和组

本主题介绍如何使用(Java)以编程方式分配、删除和查询域、用户和组。

注意

配置域时,必须为组和用户设置唯一标识符。 所选属性不仅在LDAP环境中必须是唯一的,而且必须不可更改,并且不会在目录中发生更改。 此属性还必须是简单的字符串数据类型(Active Directory 2000/2003当前允许的唯一例外是"objectsid",这是二进制值)。 例如,Novell eDirectory属性"GUID"不是简单的字符串数据类型,因此将不起作用。

  • 对于Active Directory,请使用"objectsid"
  • 对于SunOne,请使用"nsuniqueid"
注意

不支持在LDAP目录同步过程中创建多个本地用户和组。 尝试此进程可能会导致错误。

步骤的摘要

要管理用户和群组,请执行以下步骤:

  1. 包括项目文件。
  2. 创建DirectoryManagerService客户端。
  3. 调用相应的用户或组操作。

包含项目文件

在开发项目中包含必需的文件。 如果您使用Java创建客户端应用程序,请包含必要的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。

创建DirectoryManagerService客户端

在以编程方式执行目录管理器服务操作之前,必须创建目录管理器服务客户端。 使用Java API,可通过创建DirectoryManagerServiceClient对象来完成此操作。 使用Web服务API,可通过创建DirectoryManagerServiceService对象来完成此操作。

调用相应的用户或组操作

创建服务客户端后,可以调用用户或组管理操作。 服务客户端允许您分配、删除和查询域、用户和组。 请注意,可以将目录主体或本地主体添加到本地组,但无法将本地主体添加到目录组。

另请参阅

使用Java API管理用户和组

使用Web服务API管理用户和组

包括AEM Forms Java库文件

设置连接属性

用户管理器API快速入门

使用Java API管理用户和组

要使用(Java)以编程方式管理用户、组和域,请执行以下任务:

  1. 包括项目文件。

    在Java项目的类路径中包含客户端JAR文件,如adobe-usermanager-client.jar。 有关这些文件位置的信息,请参阅包括AEM Forms Java库文件

  2. 创建DirectoryManagerService客户端。

    使用其构造函数创建DirectoryManagerServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。 有关信息,请参阅设置连接属性​

  3. 调用相应的用户或组操作。

    要查找用户或组,请调用DirectoryManagerServiceClient对象查找主体的方法之一(因为主体可以是用户或组)。 在以下示例中,使用搜索筛选器(PrincipalSearchFilter对象)调用findPrincipals方法。

    由于此例中的返回值是包含Principal对象的java.util.List,因此会遍历该结果,并将Principal对象转换为UserGroup对象。

    使用生成的UserGroup对象(这两个对象都从Principal界面继承),检索工作流中需要的信息。 例如,域名和规范名称值组合在一起,可唯一标识主体。 这些值分别通过调用Principal对象的getDomainNamegetCanonicalName方法来检索。

    要删除本地用户,请调用DirectoryManagerServiceClient对象的deleteLocalUser方法并传递用户的标识符。

    要删除本地组,请调用DirectoryManagerServiceClient对象的deleteLocalGroup方法并传递该组的标识符。

另请参阅

步骤摘要

包括AEM Forms Java库文件

设置连接属性

使用Web服务API管理用户和组

要使用目录管理器服务API(Web服务)以编程方式管理用户、组和域,请执行以下任务:

  1. 包括项目文件。

  2. 创建DirectoryManagerService客户端。

    使用代理类的构造函数创建DirectoryManagerServiceService对象。

  3. 调用相应的用户或组操作。

    要查找用户或组,请调用DirectoryManagerServiceService对象查找主体的方法之一(因为主体可以是用户或组)。 在以下示例中,使用搜索筛选器(PrincipalSearchFilter对象)调用findPrincipalsWithFilter方法。 使用PrincipalSearchFilter对象时,仅当将isLocal属性设置为true时,才返回本地主体。 此行为与Java API可能发生的行为不同。

    注意

    如果未在搜索筛选器(通过PrincipalSearchFilter.resultsMax字段)中指定最大结果数,则最多将返回1000个结果。 这与使用Java API时发生的行为不同,Java API默认最大值为10个结果。 此外,搜索方法(如findGroupMembers)将不会产生任何结果,除非在搜索筛选器中指定了最大结果数(例如,通过GroupMembershipSearchFilter.resultsMax字段)。 这适用于从GenericSearchFilter类继承的所有搜索筛选器。 有关更多信息,请参阅AEM Forms API参考

    由于此例中的返回值是包含Principal对象的object[],因此会遍历该结果,并将Principal对象转换为UserGroup对象。

    使用生成的UserGroup对象(这两个对象都从Principal界面继承),检索工作流中需要的信息。 例如,域名和规范名称值组合在一起,可唯一标识主体。 这些参数可通过分别调用Principal对象的domainNamecanonicalName字段来检索。

    要删除本地用户,请调用DirectoryManagerServiceService对象的deleteLocalUser方法并传递用户的标识符。

    要删除本地组,请调用DirectoryManagerServiceService对象的deleteLocalGroup方法并传递该组的标识符。

另请参阅

步骤摘要

使用MTOM调用AEM Forms

管理角色和权限

本主题介绍如何使用授权管理器服务API(Java)以编程方式分配、删除和确定角色和权限。

在AEM Forms中,role​是一组访问一个或多个系统级别资源的权限。 这些权限通过用户管理创建,并由服务组件强制执行。 例如,管理员可以将“策略集作者”角色分配给一组用户。 然后,Rights Management将允许具有该角色的组的用户通过管理控制台创建策略集。

角色有两种类型:默认角色​和​自定义角色。 默认角色(系统角色)​已驻留在AEM Forms中。 假定默认角色不能被管理员删除或修改,因此不可变。 因此,管理员创建的自定义角色可变,管理员随后可以修改或删除这些角色。

角色可简化权限管理。 当角色被分配给主体时,一组权限被自动地分配给该主体,并且主体的所有与访问相关的决策都基于被分配的总权限集。

步骤的摘要

要管理角色和权限,请执行以下步骤:

  1. 包括项目文件。
  2. 创建AuthorizationManagerService客户端。
  3. 调用相应的角色或权限操作。

包含项目文件

在开发项目中包含必需的文件。 如果您使用Java创建客户端应用程序,请包含必要的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。

创建AuthorizationManagerService客户端

在以编程方式执行用户管理授权管理器服务操作之前,必须创建授权管理器服务客户端。 使用Java API,可通过创建AuthorizationManagerServiceClient对象来完成此操作。

调用适当的角色或权限操作

创建服务客户端后,可以调用角色或权限操作。 服务客户端允许您分配、删除和确定角色和权限。

另请参阅

使用Java API管理角色和权限

使用Web服务API管理角色和权限

包括AEM Forms Java库文件

设置连接属性

用户管理器API快速入门

使用Java API管理角色和权限

要使用授权管理器服务API(Java)管理角色和权限,请执行以下任务:

  1. 包括项目文件。

    在Java项目的类路径中包含客户端JAR文件,如adobe-usermanager-client.jar。

  2. 创建AuthorizationManagerService客户端。

    使用其构造函数创建AuthorizationManagerServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。

  3. 调用相应的角色或权限操作。

    要为主体分配角色,请调用AuthorizationManagerServiceClient对象的assignRole方法并传递以下值:

    • 包含角色标识符的java.lang.String对象
    • 包含主标识符的java.lang.String对象数组。

    要从主体中删除角色,请调用AuthorizationManagerServiceClient对象的unassignRole方法并传递以下值:

    • 包含角色标识符的java.lang.String对象。
    • 包含主标识符的java.lang.String对象数组。

另请参阅

步骤摘要

快速入门(SOAP模式):使用Java API管理角色和权限

包括AEM Forms Java库文件

设置连接属性

使用Web服务API管理角色和权限

使用授权管理器服务API(Web服务)管理角色和权限:

  1. 包括项目文件。

    创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义:http://localhost:8080/soap/services/AuthorizationManagerService?WSDL&lc_version=9.0.1

    注意

    localhost替换为托管AEM Forms的服务器的IP地址。

  2. 创建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身份验证:

      • 将AEM表单用户名分配给字段AuthorizationManagerServiceClient.ClientCredentials.UserName.UserName
      • 为字段AuthorizationManagerServiceClient.ClientCredentials.UserName.Password分配相应的密码值。
      • 将常量值HttpClientCredentialType.Basic分配给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 将常量值BasicHttpSecurityMode.TransportCredentialOnly分配给字段BasicHttpBindingSecurity.Security.Mode
  3. 调用相应的角色或权限操作。

    要为主体分配角色,请调用AuthorizationManagerServiceClient对象的assignRole方法并传递以下值:

    • 包含角色标识符的string对象
    • 包含主标识符的MyArrayOf_xsd_string对象。

    要从主体中删除角色,请调用AuthorizationManagerServiceService对象的unassignRole方法并传递以下值:

    • 包含角色标识符的string对象。
    • 包含主标识符的string对象数组。

另请参阅

步骤摘要

使用MTOM调用AEM Forms

对用户进行身份验证

本主题介绍如何使用身份验证管理器服务API(Java)来启用客户端应用程序以编程方式对用户进行身份验证。

可能需要用户身份验证才能与存储安全数据的企业数据库或其他企业存储库进行交互。

例如,假设用户在网页中输入用户名和密码,并将值提交到托管Forms的J2EE应用程序服务器。 Forms自定义应用程序可以使用身份验证管理器服务来验证用户。

如果身份验证成功,应用程序将访问安全的企业数据库。 否则,系统会向用户发送一条消息,说明用户不是授权用户。

下图显示了应用程序的逻辑流程。

au_au_umauth_process

下表介绍了此图表中的步骤

步骤

描述

1

用户访问网站并指定用户名和密码。 此信息将提交到托管AEM Forms的J2EE应用程序服务器。

2

用户凭据通过Authentication Manager服务进行身份验证。 如果用户凭据有效,工作流将继续执行步骤3。 否则,系统会向用户发送一条消息,说明用户不是授权用户。

1

用户信息和表单设计从安全企业数据库中检索。

4

用户信息将与表单设计合并,并且表单会呈现给用户。

步骤的摘要

要以编程方式验证用户,请执行以下步骤:

  1. 包括项目文件。
  2. 创建AuthenticationManagerService客户端。
  3. 调用身份验证操作。
  4. 如有必要,请检索上下文,以便客户端应用程序可以将其转发到其他AEM Forms服务进行身份验证。

包含项目文件

在开发项目中包含必需的文件。 如果您使用Java创建客户端应用程序,请包含必要的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。

创建AuthenticationManagerService客户端

在以编程方式对用户进行身份验证之前,必须创建AuthenticationManagerService客户端。 使用Java API时,请创建一个AuthenticationManagerServiceClient对象。

调用身份验证操作

创建服务客户端后,即可调用身份验证操作。 此操作将需要有关用户的信息,如用户名和密码。 如果用户未进行身份验证,则会引发异常。

检索身份验证上下文

用户进行身份验证后,即可基于经过身份验证的用户创建上下文。 然后,您可以使用内容调用其他AEM Forms服务。 例如,您可以使用上下文创建EncryptionServiceClient并使用密码加密PDF文档。 确保已经过身份验证的用户具有调用AEM Forms服务所需的名为Services User的角色。

另请参阅

包括AEM Forms Java库文件

设置连接属性

用户管理器API快速入门

使用密码加密PDF文档

使用Java API验证用户身份

使用Authentication Manager Service API(Java)验证用户:

  1. 包括项目文件。

    在Java项目的类路径中包含客户端JAR文件,如adobe-usermanager-client.jar。

  2. 创建AuthenticationManagerServices客户端。

    使用其构造函数创建AuthenticationManagerServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。

  3. 调用身份验证操作。

    调用AuthenticationManagerServiceClient对象的authenticate方法并传递以下值:

    • 包含用户名的java.lang.String对象。
    • 包含用户密码的字节数组(byte[]对象)。 可以通过调用java.lang.String对象的getBytes方法来获取byte[]对象。

    authenticate方法会返回一个AuthResult对象,该对象包含有关已验证用户的信息。

  4. 检索身份验证上下文。

    调用ServiceClientFactory对象的getContext方法,该方法将返回Context对象。

    然后调用Context对象的initPrincipal方法并传递AuthResult

使用Web服务API验证用户

使用Authentication Manager Service API(Web服务)验证用户:

  1. 包括项目文件。

    • 创建使用身份验证管理器WSDL的Microsoft .NET客户端程序集。 (请参阅使用Base64编码调用AEM Forms。)
    • 引用Microsoft .NET客户端程序集。 (请参阅使用Base64编码调用AEM Forms中的“引用.NET客户端程序集”。)
  2. 创建AuthenticationManagerService客户端。

    使用代理类的构造函数创建AuthenticationManagerServiceService对象。

  3. 调用身份验证操作。

    调用AuthenticationManagerServiceClient对象的authenticate方法并传递以下值:

    • 包含用户名的string对象
    • 包含用户密码的字节数组(byte[]对象)。 您可以使用以下示例中显示的逻辑将包含密码的string对象转换为byte[]数组,从而获取byte[]对象。
    • 返回的值将是一个AuthResult对象,可用于检索有关用户的信息。 在以下示例中,首先获取AuthResult对象的authenticatedUser字段,然后获取生成User对象的canonicalNamedomainName字段,以检索用户信息。

另请参阅

使用MTOM调用AEM Forms

使用SwaRef调用AEM Forms

以编程方式同步用户

您可以使用用户管理API以编程方式同步用户。 同步用户时,您会使用位于用户存储库中的用户数据来更新AEM Forms。 例如,假定您向用户存储库中添加新用户。 执行同步操作后,新用户将成为AEM Forms用户。 此外,用户存储库中不再存在的用户也会从AEM Forms中删除。

下图显示了与用户存储库同步的AEM Forms。

ps_ps_umauth_sync

下表介绍了此图表中的步骤

步骤

描述

1

客户端应用程序请求AEM Forms执行同步操作。

2

AEM Forms执行同步操作。

1

用户信息已更新。

4

用户能够查看更新的用户信息。

步骤的摘要

要以编程方式同步用户,请执行以下步骤:

  1. 包括项目文件。
  2. 创建UserManagerUtilServiceClient客户端。
  3. 指定企业域。
  4. 调用身份验证操作。
  5. 确定同步操作是否已完成

包含项目文件

在开发项目中包含必需的文件。 如果您使用Java创建客户端应用程序,请包含必要的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。

创建UserManagerUtilServiceClientclient

必须先创建一个UserManagerUtilServiceClient对象,然后才能以编程方式同步用户。

指定企业域

在使用用户管理API执行同步操作之前,您需要指定用户所属的企业域。 您可以指定一个或多个企业域。 在以编程方式执行同步操作之前,您必须使用管理控制台设置一个企业域。 (请参阅管理帮助。)

调用同步操作

指定一个或多个企业域后,可以执行同步操作。 执行此操作所花费的时间取决于位于用户存储库中的用户记录数。

确定同步操作是否已完成

以编程方式执行同步操作后,可以确定操作是否完成。

另请参阅

包括AEM Forms Java库文件

设置连接属性

用户管理器API快速入门

使用密码加密PDF文档

使用Java API以编程方式同步用户

使用用户管理API(Java)同步用户:

  1. 包括项目文件。

    将客户端JAR文件(如adobe-usermanager-client.jar和adobe-usermanager-util-client.jar)包含在您Java项目的类路径中。

  2. 创建UserManagerUtilServiceClient客户端。

    使用其构造函数创建UserManagerUtilServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。

  3. 指定企业域。

    • 调用UserManagerUtilServiceClient对象的scheduleSynchronization方法以启动用户同步操作。
    • 使用HashSet构造函数创建java.util.Set实例。 确保指定String作为数据类型。 此Java.util.Set实例存储应用同步操作的域名。
    • 对于要添加的每个域名,调用java.util.Set对象的add方法并传递域名。
  4. 调用同步操作。

    调用ServiceClientFactory对象的getContext方法,该方法将返回Context对象。

    然后调用Context对象的initPrincipal方法并传递AuthResult

另请参阅

以编程方式同步用户

包括AEM Forms Java库文件

设置连接属性

在此页面上