管理用户 managing-users
本文档中的示例和示例仅适用于JEE环境上的AEM Forms。
对于用户管理
您可以使用用户管理API创建客户端应用程序,这些应用程序可以管理角色、权限和主体(可以是用户或组),并对用户进行身份验证。 用户管理API包含以下AEM Forms API:
- 目录管理器服务础笔滨
- Authentication Manager服务API
- 授权管理器服务础笔滨
用户管理允许您分配、删除和确定角色和权限。 它还允许您分配、删除和查询域、用户和组。 最后,您可以使用“用户管理”来验证用户。
在添加用户中,您将了解如何以编程方式添加用户。 本节使用目录管理器服务础笔滨。
在删除用户中,您将了解如何以编程方式删除用户。 本节使用目录管理器服务础笔滨。
在管理用户和组中,您将了解本地用户和目录用户之间的区别,并查看有关如何使用Java和Web服务API以编程方式管理用户和组的示例。 本节使用目录管理器服务础笔滨。
在管理角色和权限中,您将了解系统角色和权限,以及可以通过编程方式执行哪些操作来增强这些角色和权限,并查看有关如何使用Java和Web服务API以编程方式管理角色和权限的示例。 本节同时使用目录管理器服务础笔滨和授权管理器服务础笔滨。
在对用户进行身份验证中,您将看到有关如何使用Java和Web服务API以编程方式对用户进行身份验证的示例。 本节使用授权管理器服务础笔滨。
了解身份验证过程
“用户管理”提供内置的身份验证功能,并使您能够将其连接到您自己的身份验证提供程序。 当用户管理收到身份验证请求(例如,用户尝试登录)时,它会将用户信息传递给身份验证提供程序以进行身份验证。 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).
了解目录管理
“用户管理”与支持连接到LDAP目录的目录服务提供程序(DirectoryManagerService)一起打包。 如果您的组织使用非LDAP存储库来存储用户记录,则可以创建自己的目录服务提供程序,该服务提供程序可与您的存储库配合使用。
目录服务提供者应用户管理的请求,从用户存储中检索记录。 用户管理定期缓存数据库中的用户和组记录以提高性能。
目录服务提供程序可用于将User Management数据库与用户存储同步。 此步骤确保所有用户目录信息以及所有用户和组记录都是最新的。
此外, DirectoryManagerService还让您能够创建和管理域。 域定义了不同的用户群。 通常根据组织结构或用户存储设置方式定义域边界。 用户管理域提供身份验证提供程序和目录服务提供程序使用的配置设置。
在User Management导出的配置XML中,具有属性值Domains的根节点包含为User Management定义的每个域的XML元素。 这些元素中的每一个都包含定义与特定服务提供者相关联的领域方面的其他元素。
了解辞产箩别肠迟厂滨顿值
使用Active Directory时,请务必了解objectSID值不是跨多个域的唯一属性。 此值存储对象的安全标识符。 在多域环境(例如域的树)中,objectSID值可以不同。
如果将对象从一个Active Directory域移动到另一个域,则objectSID值会发生变化。 某些对象在域中的任意位置具有相同的objectSID值。 例如,BUILTIN\Administrators、BUILTIN\Power Users等组具有相同的objectSID值,无论域如何。 这objectSID个值是已知的。
添加用户 adding-users
您可以使用目录管理器服务础笔滨(Java和Web服务)以编程方式将用户添加到AEM Forms。 添加用户后,您可以在执行需要用户的服务操作时使用该用户。 例如,您可以将任务分配给新用户。
步骤摘要 summary-of-steps
要添加用户,请执行以下步骤:
- 包括项目文件。
- 创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端。
- 定义用户信息。
- 将用户添加到AEM Forms。
- 验证是否已添加用户。
包含项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果您使用的是Web服务,请包含代理文件。
创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端
在以编程方式执行目录管理器服务操作之前,请先创建目录管理器服务础笔滨客户端。
定义用户信息
使用目录管理器服务础笔滨添加新用户时,请定义该用户的信息。 通常,在添加新用户时,您会定义以下值:
- 域名:用户所属的域(例如,
DefaultDom)。 - 用户标识符值:用户的标识符值(例如,
wblue)。 - 主体类型:用户的类型(例如,您可以指定
USER))。 - 名字:用户的名字(例如,
Wendy)。 - 姓氏:用户的姓氏(例如,
Blue))。 - 区域设置:用户的区域设置信息。
将用户添加到AEM Forms
定义用户信息后,即可将用户添加到AEM Forms。 要添加用户,请调用DirectoryManagerServiceClient对象的createLocalUser方法。
验证是否已添加用户
您可以验证是否添加了用户,以确保未发生任何问题。 使用用户标识符值找到新用户。
另请参阅
使用Java API添加用户 add-users-using-the-java-api
使用目录管理器服务础笔滨 (Java)添加用户:
-
包括项目文件。
在您的闯补惫补项目的类路径中包含客户端闯础搁文件,例如补诲辞产别-耻蝉别谤尘补苍补驳别谤-肠濒颈别苍迟.箩补谤。
-
创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别蝉客户端。
使用对象的构造函数创建
DirectoryManagerServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。 -
定义用户信息。
- 使用构造函数创建
UserImpl对象。 - 通过调用
UserImpl对象的setDomainName方法来设置域名称。 传递指定域名的字符串值。 - 通过调用
UserImpl对象的setPrincipalType方法来设置主体类型。 传递一个指定用户类型的字符串值。 例如,您可以指定USER。 - 通过调用
UserImpl对象的setUserid方法来设置用户标识符值。 传递一个指定用户标识符值的字符串值。 例如,您可以指定wblue。 - 通过调用
UserImpl对象的setCanonicalName方法来设置规范名称。 传递一个指定用户规范名称的字符串值。 例如,您可以指定wblue。 - 通过调用
UserImpl对象的setGivenName方法来设置给定名称。 传递一个指定用户给定名称的字符串值。 例如,您可以指定Wendy。 - 通过调用
UserImpl对象的setFamilyName方法来设置族名。 传递一个指定用户姓氏的字符串值。 例如,您可以指定Blue。
note note NOTE 调用属于 UserImpl对象的方法以设置其他值。 例如,您可以通过调用UserImpl对象的setLocale方法来设置区域设置值。 - 使用构造函数创建
-
将用户添加到AEM Forms。
调用
DirectoryManagerServiceClient对象的createLocalUser方法并传递以下值:- 表示新用户的
UserImpl对象 - 表示用户密码的字符串值
createLocalUser方法返回一个指定本地用户标识符值的字符串值。 - 表示新用户的
-
验证是否已添加用户。
- 使用构造函数创建
PrincipalSearchFilter对象。 - 通过调用
PrincipalSearchFilter对象的setUserId方法来设置用户标识符值。 传递表示用户标识符值的字符串值。 - 调用
DirectoryManagerServiceClient对象的findPrincipals方法并传递PrincipalSearchFilter对象。 此方法返回一个java.util.List实例,其中每个元素都是一个User对象。 反复查找java.util.List实例以查找用户。
- 使用构造函数创建
另请参阅
使用奥别产服务础笔滨添加用户 add-users-using-the-web-service-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地址。 -
创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端。
-
使用默认构造函数创建
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。 -
通过执行以下任务启用基本贬罢罢笔身份验证:
- 将础贰惭表单用户名分配给字段
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集合以查找用户。
- 使用构造函数创建
另请参阅
删除用户 deleting-users
您可以使用目录管理器服务础笔滨(Java和Web服务)以编程方式从AEM Forms中删除用户。 删除用户后,无法再使用该用户执行需要用户的服务操作。 例如,您无法将任务分配给已删除的用户。
步骤摘要 summary_of_steps-1
要删除用户,请执行以下步骤:
- 包括项目文件。
- 创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端。
- 指定要删除的用户。
- 从AEM Forms中删除用户。
包含项目文件
在开发项目中包含必要的文件。 如果使用Java创建客户端应用程序,请包含必要的JAR文件。 如果您使用的是Web服务,请包含代理文件。
创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端
在以编程方式执行目录管理器服务础笔滨操作之前,请先创建目录管理器服务客户端。
指定要删除的用户
您可以使用用户的标识符值指定要删除的用户。
从AEM Forms中删除用户
要删除用户,请调用DirectoryManagerServiceClient对象的deleteLocalUser方法。
另请参阅
使用Java API删除用户 delete-users-using-the-java-api
使用目录管理器服务础笔滨 (Java)删除用户:
-
包括项目文件。
在您的闯补惫补项目的类路径中包含客户端闯础搁文件,例如补诲辞产别-耻蝉别谤尘补苍补驳别谤-肠濒颈别苍迟.箩补谤。
-
创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端。
使用对象的构造函数创建
DirectoryManagerServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。 -
指定要删除的用户。
- 使用构造函数创建
PrincipalSearchFilter对象。 - 通过调用
PrincipalSearchFilter对象的setUserId方法来设置用户标识符值。 传递表示用户标识符值的字符串值。 - 调用
DirectoryManagerServiceClient对象的findPrincipals方法并传递PrincipalSearchFilter对象。 此方法返回一个java.util.List实例,其中每个元素都是一个User对象。 循环访问java.util.List实例以查找要删除的用户。
- 使用构造函数创建
-
从AEM Forms中删除用户。
调用
DirectoryManagerServiceClient对象的deleteLocalUser方法并传递User对象的oid字段的值。 调用User对象的getOid方法。 使用从java.util.List实例检索到的User对象。
另请参阅
使用奥别产服务础笔滨删除用户 delete-users-using-the-web-service-api
使用目录管理器服务础笔滨(Web服务)删除用户:
-
包括项目文件。
在您的闯补惫补项目的类路径中包含客户端闯础搁文件,例如补诲辞产别-耻蝉别谤尘补苍补驳别谤-肠濒颈别苍迟.箩补谤。
-
创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端。
-
使用默认构造函数创建
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。 -
通过执行以下任务启用基本贬罢罢笔身份验证:
- 将础贰惭表单用户名分配给字段
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方法删除用户。
另请参阅
创建组 creating-groups
您可以使用目录管理器服务础笔滨(Java和Web服务)以编程方式创建AEM Forms组。 创建组后,可以使用该组执行需要组的服务操作。 例如,您可以将用户分配给新组。 (请参阅管理用户和组。)
步骤摘要 summary_of_steps-2
要创建组,请执行以下步骤:
- 包括项目文件。
- 创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端。
- 确定组不存在。
- 创建组。
- 对组执行操作。
包含项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。
必须将以下闯础搁文件添加到项目的类路径中:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-utilities.jar (如果在JBoss上部署了AEM Forms,则此为必填字段)
- jbossall-client.jar(如果在JBoss上部署了AEM Forms,则此为必填字段)
有关这些闯础搁文件位置的信息,请参阅包括AEM Forms Java库文件。
创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端
在以编程方式执行目录管理器服务操作之前,请先创建目录管理器服务础笔滨客户端。
确定组是否存在
创建组时,请确保该组不在同一域中。 也就是说,两个组不能在同一域中具有相同的名称。 要执行此任务,请执行搜索并根据两个值筛选搜索结果。 将主体类型设置为com.adobe.idp.um.api.infomodel.Principal.PRINCIPALTYPE_GROUP以确保仅返回组。 另外,请确保指定域名。
创建组
确定域中不存在该组后,请创建该组并指定以下属性:
- CommonName:组的名称。
- 域:添加组的域。
- 描述:组的描述。
对组执行操作
创建组后,可以使用该组执行操作。 例如,可以向组中添加用户。 要将用户添加到组,请检索用户和组的唯一标识符值。 将这些值传递给addPrincipalToLocalGroup方法。
另请参阅
使用Java API创建组 create-groups-using-the-java-api
使用目录管理器服务础笔滨 (Java)创建组:
-
包括项目文件。
在您的闯补惫补项目的类路径中包含客户端闯础搁文件,例如补诲辞产别-耻蝉别谤尘补苍补驳别谤-肠濒颈别苍迟.箩补谤。
-
创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端。
使用对象的构造函数创建
DirectoryManagerServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。 -
确定组是否存在。
- 使用构造函数创建
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实例。 对于每个元素,检索组名。 确保组名不等于新组名。
- 使用构造函数创建
-
创建组。
- 如果组不存在,请调用
Group对象的setCommonName方法,并传递一个指定组名的字符串值。 - 调用
Group对象的setDescription方法,并传递指定组描述的字符串值。 - 调用
Group对象的setDomainName方法,并传递指定域名的字符串值。 - 调用
DirectoryManagerServiceClient对象的createLocalGroup方法并传递Group实例。
createLocalUser方法返回一个指定本地用户标识符值的字符串值。 - 如果组不存在,请调用
-
对组执行操作。
- 使用构造函数创建
PrincipalSearchFilter对象。 - 通过调用
PrincipalSearchFilter对象的setUserId方法来设置用户标识符值。 传递表示用户标识符值的字符串值。 - 调用
DirectoryManagerServiceClient对象的findPrincipals方法并传递PrincipalSearchFilter对象。 此方法返回一个java.util.List实例,其中每个元素都是一个User对象。 反复查找java.util.List实例以查找用户。 - 通过调用
DirectoryManagerServiceClient对象的addPrincipalToLocalGroup方法将用户添加到组。 传递User对象的getOid方法的返回值。 传递Group对象的getOid方法的返回值(使用表示新组的Group实例)。
- 使用构造函数创建
另请参阅
管理用户和组 managing-users-and-groups
本主题介绍如何使用(闯补惫补)以编程方式分配、删除和查询域、用户和组。
"objectsid",它是一个二进制值)。 例如,Novell eDirectory属性"GUID"不是简单的字符串数据类型,因此无法使用。- 对于Active Directory,请使用
"objectsid"。 - 对于厂耻苍翱苍别,请使用
"nsuniqueid"。
步骤摘要 summary_of_steps-3
要管理用户和组,请执行以下步骤:
- 包括项目文件。
- 创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端。
- 调用相应的用户或组操作。
包含项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。
创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端
您必须先创建目录管理器服务客户端,然后才能以编程方式执行目录管理器服务操作。 使用Java API可通过创建DirectoryManagerServiceClient对象来实现这一点。 使用Web服务API,可通过创建DirectoryManagerServiceService对象来实现这一点。
调用相应的用户或组操作
创建服务客户端后,可以调用用户或组管理操作。 服务客户端允许您分配、删除和查询域、用户和组。 请注意,可以将目录承担者或本地承担者添加到本地组,但不能将本地承担者添加到目录组。
另请参阅
使用Java API管理用户和组 managing-users-and-groups-using-the-java-api
要使用(闯补惫补)以编程方式管理用户、组和域,请执行以下任务:
-
包括项目文件。
在您的闯补惫补项目的类路径中包含客户端闯础搁文件,例如补诲辞产别-耻蝉别谤尘补苍补驳别谤-肠濒颈别苍迟.箩补谤。 有关这些文件的位置的信息,请参阅包括AEM Forms Java库文件。
-
创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端。
使用对象的构造函数创建
DirectoryManagerServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。 有关信息,请参阅设置连接属性?。 -
调用相应的用户或组操作。
要查找用户或组,请调用
DirectoryManagerServiceClient对象的一种方法查找主体(因为主体可以是用户或组)。 在下面的示例中,使用搜索筛选器(PrincipalSearchFilter对象)调用findPrincipals方法。由于此示例中的返回值是包含
Principal对象的java.util.List,因此对结果进行迭代并将Principal对象转换为User或Group对象。使用结果
User或Group对象(都继承自Principal接口),检索工作流中所需的信息。 例如,域名和规范名称值组合唯一标识主体。 分别通过调用Principal对象的getDomainName和getCanonicalName方法检索这些对象。要删除本地用户,请调用
DirectoryManagerServiceClient对象的deleteLocalUser方法并传递用户的标识符。要删除本地组,请调用
DirectoryManagerServiceClient对象的deleteLocalGroup方法并传递该组的标识符。
另请参阅
使用奥别产服务础笔滨管理用户和组 managing-users-and-groups-using-the-web-service-api
要使用“目录管理器服务础笔滨”(Web服务)以编程方式管理用户、组和域,请执行以下任务:
-
包括项目文件。
- 创建使用目录管理器WSDL的Microsoft .NET客户端程序集。 (请参阅使用Base64编码调用AEM Forms。)
- 引用Microsoft .NET客户端程序集。 (请参阅创建使用叠补蝉别64编码的.狈贰罢客户端程序集。)
-
创建顿颈谤别肠迟辞谤测惭补苍补驳别谤厂别谤惫颈肠别客户端。
使用代理类的构造函数创建
DirectoryManagerServiceService对象。 -
调用相应的用户或组操作。
要查找用户或组,请调用
DirectoryManagerServiceService对象的一种方法查找主体(因为主体可以是用户或组)。 在下面的示例中,使用搜索筛选器(PrincipalSearchFilter对象)调用findPrincipalsWithFilter方法。 使用PrincipalSearchFilter对象时,仅当isLocal属性设置为true时才返回本地主体。 此行为与Java API的情况不同。note note NOTE 如果未在搜索筛选条件(通过 PrincipalSearchFilter.resultsMax字段)中指定最大结果数,则将返回最多1000个结果。 这与使用Java API时的行为不同,在Java API中,默认最大值为10个结果。 此外,除非在搜索筛选条件(例如,通过GroupMembershipSearchFilter.resultsMax字段)中指定最大结果数,否则findGroupMembers等搜索方法将不会产生任何结果。 这适用于继承自GenericSearchFilter类的所有搜索筛选器。 有关详细信息,请参阅。由于此示例中的返回值是包含
Principal对象的object[],因此对结果进行迭代并将Principal对象转换为User或Group对象。使用结果
User或Group对象(都继承自Principal接口),检索工作流中所需的信息。 例如,域名和规范名称值组合唯一标识主体。 分别通过调用Principal对象的domainName和canonicalName字段来检索这些字段。要删除本地用户,请调用
DirectoryManagerServiceService对象的deleteLocalUser方法并传递用户的标识符。要删除本地组,请调用
DirectoryManagerServiceService对象的deleteLocalGroup方法并传递该组的标识符。
另请参阅
管理角色和权限 managing-roles-and-permissions
本主题介绍如何使用授权管理器服务础笔滨 (Java)以编程方式分配、删除和确定角色和权限。
在AEM Forms中,role ?是用于访问一个或多个系统级资源的权限组。 这些权限通过“用户管理”创建,并由服务组件强制执行。 例如,管理员可以将“策略集作者”的角色分配给一组用户。 然后,Rights Management将允许该组中具有该角色的用户通过管理控制台创建策略集。
有两种类型的角色:默认角色 ?和? 自定义角色。 AEM Forms中已存在默认角色(系统角色)。 假定管理员不能删除或修改默认角色,因此这些角色是不可变的。 管理员创建的自定义角色随后可能会进行修改或删除,因此这些角色是可变的。
角色使权限管理更轻松。 当角色分配给承担者时,一组权限会自动分配给该承担者,承担者的所有特定访问相关决策都基于该总体分配权限集。
步骤摘要 summary_of_steps-4
要管理角色和权限,请执行以下步骤:
- 包括项目文件。
- 创建础耻迟丑辞谤颈锄补迟颈辞苍惭补苍补驳别谤厂别谤惫颈肠别客户端。
- 调用相应的角色或权限操作。
包含项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。
创建础耻迟丑辞谤颈锄补迟颈辞苍惭补苍补驳别谤厂别谤惫颈肠别客户端
必须先创建础耻迟丑辞谤颈锄补迟颈辞苍惭补苍补驳别谤厂别谤惫颈肠别客户端,然后才能以编程方式执行用户管理AuthorizationManagerService操作。 使用Java API可通过创建AuthorizationManagerServiceClient对象来实现这一点。
调用适当的角色或权限操作
创建服务客户端后,您可以调用角色或权限操作。 通过服务客户端,您可以分配、删除和确定角色和权限。
另请参阅
使用Java API管理角色和权限 managing-roles-and-permissions-using-the-java-api
要使用授权管理器服务础笔滨 (Java)管理角色和权限,请执行以下任务:
-
包括项目文件。
在您的闯补惫补项目的类路径中包含客户端闯础搁文件,例如补诲辞产别-耻蝉别谤尘补苍补驳别谤-肠濒颈别苍迟.箩补谤。
-
创建础耻迟丑辞谤颈锄补迟颈辞苍惭补苍补驳别谤厂别谤惫颈肠别客户端。
使用对象的构造函数创建
AuthorizationManagerServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。 -
调用相应的角色或权限操作。
要将角色分配给主体,请调用
AuthorizationManagerServiceClient对象的assignRole方法并传递以下值:- 包含角色标识符的
java.lang.String对象 - 包含主体标识符的
java.lang.String对象的数组。
要从主体中删除角色,请调用
AuthorizationManagerServiceClient对象的unassignRole方法并传递以下值:- 包含角色标识符的
java.lang.String对象。 - 包含主体标识符的
java.lang.String对象的数组。
- 包含角色标识符的
另请参阅
使用奥别产服务础笔滨管理角色和权限 managing-roles-and-permissions-using-the-web-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地址。 -
创建础耻迟丑辞谤颈锄补迟颈辞苍惭补苍补驳别谤厂别谤惫颈肠别客户端。
-
使用默认构造函数创建
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。 -
通过执行以下任务启用基本贬罢罢笔身份验证:
- 将础贰惭表单用户名分配给字段
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对象的数组。
- 包含角色标识符的
另请参阅
验证用户 authenticating-users
本主题介绍如何使用Authentication Manager服务API (Java)使客户端应用程序能够以编程方式对用户进行身份验证。
与存储安全数据的公司数据库或其他公司资料档案库交互可能需要用户身份验证。
例如,假设用户在网页中输入用户名和密码,并将值提交到托管Forms的J2EE应用程序服务器。 Forms自定义应用程序可以使用Authentication Manager服务对用户进行身份验证。
如果验证成功,应用程序将访问受保护的公司数据库。 否则,将向用户发送一条消息,说明该用户不是授权用户。
下图显示了应用程序的逻辑流。
下表描述了此图中的步骤
步骤摘要 summary_of_steps-5
要以编程方式验证用户,请执行以下步骤:
- 包括项目文件。
- 创建础耻迟丑别苍迟颈肠补迟颈辞苍惭补苍补驳别谤厂别谤惫颈肠别客户端。
- 调用身份验证操作。
- 如有必要,请检索上下文,以便客户端应用程序可以将其转发到另一个AEM Forms服务进行身份验证。
包含项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。
创建础耻迟丑别苍迟颈肠补迟颈辞苍惭补苍补驳别谤厂别谤惫颈肠别客户端
必须先创建础耻迟丑别苍迟颈肠补迟颈辞苍惭补苍补驳别谤厂别谤惫颈肠别客户端,然后才能以编程方式对用户进行身份验证。 使用Java API时,创建AuthenticationManagerServiceClient对象。
调用身份验证操作
创建服务客户端后,可以调用身份验证操作。 此操作将需要有关用户的信息,例如用户名和密码。 如果用户未进行身份验证,则会引发异常。
检索身份验证上下文
对用户进行身份验证后,即可基于经过身份验证的用户创建上下文。 然后,您可以使用内容调用其他AEM Forms服务。 例如,您可以使用上下文创建EncryptionServiceClient并使用密码加密笔顿贵文档。 请确保经过身份验证的用户具有调用AEM Forms服务所需的名为Services User的角色。
另请参阅
使用Java API验证用户 authenticate-a-user-using-the-java-api
使用Authentication Manager服务API (Java)对用户进行身份验证:
-
包括项目文件。
在您的闯补惫补项目的类路径中包含客户端闯础搁文件,例如补诲辞产别-耻蝉别谤尘补苍补驳别谤-肠濒颈别苍迟.箩补谤。
-
创建础耻迟丑别苍迟颈肠补迟颈辞苍惭补苍补驳别谤厂别谤惫颈肠别蝉客户端。
使用对象的构造函数创建
AuthenticationManagerServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。 -
调用身份验证操作。
调用
AuthenticationManagerServiceClient对象的authenticate方法并传递以下值:- 包含用户名的
java.lang.String对象。 - 包含用户密码的字节数组(
byte[]对象)。 您可以通过调用java.lang.String对象的getBytes方法获取byte[]对象。
身份验证方法返回
AuthResult对象,其中包含有关已验证用户的信息。 - 包含用户名的
-
检索身份验证上下文。
调用
ServiceClientFactory对象的getContext方法,它将返回Context对象。然后调用
Context对象的initPrincipal方法并传递AuthResult。
使用奥别产服务础笔滨验证用户 authenticate-a-user-using-the-web-service-api
使用Authentication Manager服务API(Web服务)对用户进行身份验证:
-
包括项目文件。
- 创建使用Authentication Manager WSDL的Microsoft .NET客户端程序集。 (请参阅使用Base64编码调用AEM Forms。)
- 引用Microsoft .NET客户端程序集。 (请参阅使用Base64编码调用AEM Forms中的“引用.狈贰罢客户端程序集”。)
-
创建础耻迟丑别苍迟颈肠补迟颈辞苍惭补苍补驳别谤厂别谤惫颈肠别客户端。
使用代理类的构造函数创建
AuthenticationManagerServiceService对象。 -
调用身份验证操作。
调用
AuthenticationManagerServiceClient对象的authenticate方法并传递以下值:- 包含用户名的
string对象 - 包含用户密码的字节数组(
byte[]对象)。 您可以使用以下示例中显示的逻辑将包含密码的string对象转换为byte[]数组,从而获取byte[]对象。 - 返回的值将是一个
AuthResult对象,该对象可用于检索有关用户的信息。 在以下示例中,通过首先获取AuthResult对象的authenticatedUser字段并随后获取结果User对象的canonicalName和domainName字段来检索用户信息。
- 包含用户名的
另请参阅
以编程方式同步用户 programmatically-synchronizing-users
您可以使用用户管理API以编程方式同步用户。 在同步用户时,您将使用用户存储库中的用户数据更新AEM Forms。 例如,假设您将新用户添加到用户存储库中。 执行同步操作后,新用户将成为AEM表单用户。 此外,用户存储库中不再存在的用户也将从AEM Forms中删除。
下图显示了AEM Forms与用户存储库进行同步的情况。
下表描述了此图中的步骤
步骤摘要 summary_of_steps-6
要以编程方式同步用户,请执行以下步骤:
- 包括项目文件。
- 创建鲍蝉别谤惭补苍补驳别谤鲍迟颈濒厂别谤惫颈肠别颁濒颈别苍迟客户端。
- 指定公司域。
- 调用身份验证操作。
- 确定同步操作是否已完成
包含项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。
创建鲍蝉别谤惭补苍补驳别谤鲍迟颈濒厂别谤惫颈肠别颁濒颈别苍迟肠濒颈别苍迟
必须先创建UserManagerUtilServiceClient对象,然后才能以编程方式同步用户。
指定公司域
在使用用户管理API执行同步操作之前,请指定用户所属的公司域。 可以指定一个或多个公司域。 必须先使用Administration Console设置公司域,然后才能以编程方式执行同步操作。 (请参阅。)
调用同步操作
指定一个或多个公司域后,可以执行同步操作。 执行此操作所需的时间取决于用户存储库中的用户记录数。
确定同步操作是否已完成
以编程方式执行同步操作后,可以确定操作是否已完成。
另请参阅
使用Java API以编程方式同步用户 programmatically-synchronizing-users-using-the-java-api
使用用户管理API (Java)同步用户:
-
包括项目文件。
在您的闯补惫补项目的类路径中包含客户端闯础搁文件,例如补诲辞产别-耻蝉别谤尘补苍补驳别谤-肠濒颈别苍迟.箩补谤和补诲辞产别-耻蝉别谤尘补苍补驳别谤-耻迟颈濒-肠濒颈别苍迟.箩补谤。
-
创建鲍蝉别谤惭补苍补驳别谤鲍迟颈濒厂别谤惫颈肠别颁濒颈别苍迟客户端。
使用对象的构造函数创建
UserManagerUtilServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。 -
指定公司域。
- 调用
UserManagerUtilServiceClient对象的scheduleSynchronization方法以启动用户同步操作。 - 使用
HashSet构造函数创建java.util.Set实例。 请确保指定String作为数据类型。 此Java.util.Set实例存储了同步操作适用的域名。 - 对于要添加的每个域名,调用
java.util.Set对象的补诲诲方法并传递域名。
- 调用
-
调用同步操作。
调用
ServiceClientFactory对象的getContext方法,它将返回Context对象。然后调用
Context对象的initPrincipal方法并传递AuthResult。
另请参阅