<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
内容
LDAP 政策提供以下内容:
- 身份验证:请求中提供的用户凭据已经过验证
根据 LDAP 提供商中的凭据进行身份验证。LDAP 策略为
身份验证,让您可以使用任何 DN 值和密码,即使该 DN 值
请求的内容例如,假设您需要使用电子邮件地址 / 密码
身份验证。可以使用以下选项:
<ph type="x-smartling-placeholder">
- </ph>
- 如果请求中是电子邮件地址,您只需将其与 LDAP 的密码结合使用即可 身份验证。
- 如果请求中不包含电子邮件地址,但有另一个 DN 属性(例如电话号码), 您可以使用电话号码从 LDAP 获取相应的电子邮件,然后使用电子邮件地址 / 进行身份验证。
- 可分辨名称 (DN) 搜索:除了身份验证之外,您还可以 也可使用 LDAP 政策识别请求中的用户属性,例如电子邮件,以及 执行从 LDAP 检索该用户的其他 DN 属性的查询。检索到的 DN 为 都存储在变量中
如果仅限 LDAP 中的用户访问受保护的资源,请使用 LDAP 政策 (例如您的管理员用户、组织用户和开发者),尤其是在 OAuth 令牌访问不必要或过于复杂。该政策还适用于 检索用于 API 代理流的域名元数据。
例如,您可以设置仅在用户成功通过身份验证时才执行 API 调用。 针对 LDAP;之后,您可以视需要检索用户的 DN(域名)属性, 身份验证成功。
如需了解详情,请参阅:
示例
用户名/密码身份验证
<Ldap name="4GLdapPolicy"> <LdapResource>ldap1</LdapResource> <Authentication> <UserName ref="request.header.username"/> <Password ref="request.header.password"/> <Scope>subtree</Scope> <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com --> </Authentication> </Ldap>
此示例提供针对 LDAP 提供商的身份验证。政策传递用户名 从请求发送到 LDAP 以进行身份验证。
DN 属性身份验证
<Ldap name="LdapPolicy"> <LdapResource>ldap1</LdapResource> <Authentication> <Password ref="request.header.password"/> <SearchQuery>mail={request.header.mail}</SearchQuery> <Scope>subtree</Scope> <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com --> </Authentication> </Ldap>
此政策通过请求标头中的电子邮件地址获取用户的 DN,然后 使用请求标头中提供的密码针对 LDAP 对用户进行身份验证。
正在搜索 LDAP
<Ldap name="LdapPolicy"> <!-- using a custom LDAP provider --> <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass> <LdapResource>MyLdap</LdapResource> <Search> <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com --> <SearchQuery>mail={request.header.mail}</SearchQuery> <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> <Scope></Scope> <!-- default is ‘subtree’ --> </Search> </Ldap>
此政策会引用自定义 LDAP 提供方。使用请求中的电子邮件地址 标头以识别用户,然后从中检索用户的地址、电话和职位。 LDAP。检索到的 DN 属性存储在变量中。请参阅“针对特定政策的内容” 。
如要搜索 LDAP 和检索 DN 属性,请求必须包含管理员 凭据。
元素参考
以下是 LDAP 政策元素和属性的说明。
元素 |
说明 |
---|---|
|
包含名称属性的父元素,供您输入政策名称。 |
|
将 LDAP 政策与自定义 LDAP 结合使用时
provider(并非 Apigee 提供),请指定完全限定的 LDAP 连接器类别。
这是您实现 Apigee 的 |
|
输入 LDAP 资源的环境名称。请参阅创建 LDAP 资源。 |
|
LDAP 的基本级别,您的所有数据都位于该级别。例如,在
Apigee 的 LDAP 提供商,所有数据都位于
|
|
|
Authentication |
|
|
您实现的身份验证行为的父元素。 |
|
采用以下某个属性的空元素:
如果您没有使用用户名进行身份验证,或者用户名未包含在 则无需添加此元素。 如果请求中包含用户名,但您希望使用 DN 属性对用户进行身份验证
除用户名(例如 email)外,还应添加 |
|
采用以下某个属性的空元素:
|
|
如果您想使用用户名以外的 DN 属性(例如 email、email、 配置 LDAP 政策以获取请求中的 DN 属性(例如用户名), 用于识别 LDAP 中的用户、检索电子邮件以及对 用户。 例如,假设 LDAP 定义了一个“mail”属性:
|
搜索 |
|
|
您实现的搜索行为的父元素。 |
|
通过在请求或响应中使用元数据标识用户,您可以使用
元素从 LDAP 检索用户的其他 DN 属性。例如,如果
请求包含用户电子邮件,且您的 LDAP 为
此查询会在 LDAP 中搜索与请求中的电子邮件相匹配的电子邮件, 政策现在可以使用 Attributes 元素。 |
|
使用一个或多个 例如,在 属性值是 LDAP 中定义的 DN 属性名称。 <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
使用说明
借助适用于私有云的 Apigee Edge,您可以在 API 调用中利用 LDAP 提供商。使用 LDAP 政策,应用可以根据 LDAP 中存储的用户凭据验证凭据,并且您可以 从 LDAP 检索可分辨名称 (DN),也就是与 LDAP 和 例如电子邮件地址、地址和电话号码返回的 DN 存储在 供 API 代理进一步使用
创建 LDAP 资源
LDAP 政策利用您在 Apigee Edge 中创建的 LDAP 资源。一个 LDAP 资源 提供到 LDAP 代码库的连接信息。
如需创建和管理 LDAP 资源,请使用以下 API 和载荷:
API
创建 (POST
) 一个 LDAP 资源或列出 (GET
) 所有 LDAP 资源:
/v1/organizations/org_name/environments/environment/ldapresources
获取 (GET
)、更新 (POST
) 和删除 (DELETE
) LDAP 资源的详细信息:
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
载荷
以下是带有用法注释的示例 XML 载荷。
<LdapResource name="ldap1"> <Connection> <Hosts> <!-- port is optional: defaults to 389 for ldap:// and 636 for ldaps:// --> <Host port="636">foo.com</Host> </Hosts> <SSLEnabled>false</SSLEnabled> <!-- optional, defaults to false --> <Version>3</Version> <!-- optional, defaults to 3--> <Authentication>simple</Authentication> <!-- optional, only simple supported --> <ConnectionProvider>jndi|unboundid</ConnectionProvider> <!-- required --> <ServerSetType>single|round robin|failover</ServerSetType> <!-- not applicable for jndi --> <!-- If using a custom LDAP provider, the fully qualified class: --> <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass> </Connection> <ConnectPool enabled="true"> <!-- enabled is optional, defaults to true --> <Timeout>30000</Timeout> <!-- optional, in milliseconds; if not set, no timeout --> <Maxsize>50</Maxsize> <!-- optional; if not set, no max connections --> <Prefsize>30</Prefsize> <!-- optional; if not set, no pref size --> <Initsize></Initsize> <!-- optional; if not set, defaults to 1 --> <Protocol></Protocol> <!-- optional; if not set, defaults to 'ssl plain' --> </ConnectPool> <Admin> <DN>cn=manager,dc=apigee,dc=com</DN> <Password>secret</Password> </Admin> </LdapResource>
curl 示例:创建 LDAP 资源
以下示例将创建一个名为 ldap1 的 LDAP 资源。
curl -X POST -H "Content-Type: application/xml" \ https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/ldapresources \ -u apigee_email:password -d \ '<LdapResource name="ldap1"> <Connection> <Hosts> <Host>foo.com</Host> </Hosts> <SSLEnabled>false</SSLEnabled> <Version>3</Version> <Authentication>simple</Authentication> <ConnectionProvider>unboundid</ConnectionProvider> <ServerSetType>round robin</ServerSetType> </Connection> <ConnectPool enabled="true"> <Timeout>30000</Timeout> <Maxsize>50</Maxsize> <Prefsize>30</Prefsize> <Initsize></Initsize> <Protocol></Protocol> </ConnectPool> <Admin> <DN>cn=manager,dc=apigee,dc=com</DN> <Password>secret</Password> </Admin> </LdapResource>'
响应代码
以下是政策针对成功或失败返回的 HTML 响应代码:
- 成功:200
- 失败:401
在 Edge 中针对私有云使用自定义 LDAP 提供商
使用自定义 LDAP 提供方
适用于私有云的 Apigee Edge 附带一个 LDAP 提供方,该提供方已配置为 LDAP 政策的身份验证。不过,如果您使用的是自定义 LDAP 提供商,则必须启用 提供商以支持 LDAP 政策。具体操作步骤如下:
- 在您的 LDAP 提供方类中,实现
ExternalLdapConProvider
接口。public interface ExternalLdapConProvider { void doAuthentication(LdapBean LlapBean, String userDN, String password, String baseDN); void doSearchAndAuthentication(LdapBean LlapBean, String password, String baseDN, String query, int scope); Collection<Map<String, String[]>> doSearch(LdapBean LlapBean, String query, String baseDN, Collection<String> requiredAttributes, int scope); void closeConnections(); }
- 在政策配置的
<LdapConnectorClass>
中(后续部分): 添加自定义 LDAP 提供商的完全限定类名。 - 下载此文件:custom-ldap.jar_.zip。 (您可能需要右键点击并选择另存为)。
- 解压缩。
- 将 custom-ldap.jar 文件添加到环境中,并确保它位于类路径中。
- 为您的 LDAP 提供商创建环境资源。您将使用
LDAP 政策的
<LdapResource>
元素中的名称。
使用 Java 版 UnboundID LDAP SDK
您可以将 UnboundID LDAP SDK 与 LDAP 政策搭配使用,但必须先下载版本 2.3.1 并将其添加到每个消息处理器的类路径中。
如需将 UnboundID LDAP SDK 与 LDAP 政策搭配使用,请执行以下操作:
- 打开浏览器,然后前往 UnboundID LDAP SDK 对应的 Sourceforge 文件代码库:
https://sourceforge.net/projects/ldap-sdk/files/
- 找到 SDK 2.3.1 版(SE 或 标准版)并下载 ZIP 文件 。例如,下载“unboundid-ldapsdk-2.3.1-se.zip”。
- 从 SDK ZIP 文件解压缩 JAR 文件,如以下示例所示:
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
此命令仅将 JAR 文件提取到 ~/tmp 目录。删除目录 具有
-j
的结构,但这是可选的。 - 在每个消息处理器节点上:
<ph type="x-smartling-placeholder">
- </ph>
- 将 JAR 文件复制到消息处理器的
/opt/apigee/edge-gateway/lib/thirdparty
目录中。 - 如有必要,为 Apigee 用户授予 JAR 文件的权限,以便消息处理器可以访问该文件。
- 重启消息处理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge 会添加
/opt/apigee/edge-gateway/lib/thirdparty
目录添加到类路径。 - 将 JAR 文件复制到消息处理器的
流变量
以下是由 SearchQuery
填充的 LDAP 政策变量。
变量 |
说明 |
---|---|
ldap.policyName.execution.success |
执行政策后,此数据流变量的值将是“true”“false”或“false” 具体取决于结果。 |
ldap.policyName.search.result[index]. attribute.attrName[index]=value |
此变量的格式非常灵活, 特定属性:表示多个属性,以及具有多个属性的属性 值。索引是一个从 1 开始的数字。如果未提供索引编号,则使用默认值 索引编号为 1。 如果政策返回地址、电话号码和电子邮件地址,您可以检索第一个属性 和值: ldap.policyName.search.result.attribute.address ldap.policyName.search.result.attribute.phone ldap.policyName.search.result.attribute.email 如果您想在搜索结果中检索第三个地址属性, 则应该使用以下代码: ldap.policyName.search.result[3].attribute.address 如果某个属性具有多个值(例如,如果用户有多个电子邮件地址 地址),则可以从结果中检索第二个电子邮件地址,如下所示: ldap.policyName.search.result.attribute.mail[2] |
错误代码
Edge 政策返回的错误采用一致的格式,如错误代码参考文档中所述。
此政策使用以下错误代码:
错误代码 | 讯息 |
---|---|
InvalidAttributeName |
Invalid attribute name {0}. |
InvalidSearchBase |
Search base can not be empty. |
InvalidValueForPassword |
Invalid value for password field. It can not be empty. |
InvalidSearchScope |
Invalid scope {0}. Allowed scopes are {1}. |
InvalidUserCredentials |
Invalid user credentials. |
InvalidExternalLdapReference |
Invalid external ldap reference {0}. |
LdapResourceNotFound |
Ldap resource {0} not found. |
BaseDNRequired |
Base DN required. |
OnlyReferenceOrValueIsAllowed |
Only value or reference is allowed for {0}. |
AttributesRequired |
At least one attribute required for search action. |
UserNameIsNull |
User name is null. |
SearchQueryAndUserNameCannotBePresent |
Both search query and username can not be present in the authentication action.
Please specify either one of them. |