LDAP 身份验证
与其他类型的身份验证策略一样,轻型目录访问协议 (LDAP) 身份验证策略由表达式和操作组成。创建身份验证策略后,将其绑定到身份验证虚拟服务器并为其分配优先级。绑定时,还要将其指定为主策略或辅助策略。除了标准身份验证功能外,LDAP 还可以在其他 Active Directory (AD) 服务器中搜索本地不存在的用户的用户帐户。此函数称为推荐支持或推荐追踪。
通常,您可以将 NetScaler 配置为在身份验证期间使用身份验证服务器的 IP 地址。使用 LDAP 身份验证服务器,您还可以将 ADC 配置为使用 LDAP 服务器的 FQDN 而不是其 IP 地址来对用户进行身份验证。在身份验证服务器可能位于多个 IP 地址中的任何一个,但始终使用单个 FQDN 的环境中,使用 FQDN 可以简化原本复杂得多的身份验证、授权和审核配置。要使用服务器的 FQDN 而不是其 IP 地址来配置身份验证,请遵循正常的配置过程(创建身份验证操作时除外)。创建操作时,您可以使用 serverName 参数而非 serverIP 参数,然后用服务器的 FQDN 代替其 IP 地址。
在决定是否将 ADC 配置为使用 LDAP 服务器的 IP 或 FQDN 对用户进行身份验证之前,请考虑将身份验证、授权和审核配置为向 FQDN 而不是 IP 地址进行身份验证会为身份验证过程增加一个额外的步骤。ADC 每次对用户进行身份验证时,都必须解析 FQDN。如果有大量用户尝试同时进行身份验证,则由此产生的 DNS 查找可能会减慢身份验证过程。
默认情况下,LDAP 引用支持处于禁用状态,无法全局启用。必须为每个 LDAP 操作显式启用它。确保 AD 服务器接受与 binddn credentials
引用 (GC) 服务器相同的服务器。要启用引荐支持,您可以配置 LDAP 操作以关注引用,并指定要关注的最大引荐数。
如果启用了推荐支持,并且 NetScaler 收到了对请求的 LDAP_REFERRATION 响应,则身份验证、授权和审计将引用到引用中包含的 active Directory (AD) 服务器,并在该服务器上执行更新。首先,身份验证、授权和审核在 DNS 中查找引用服务器,然后连接到该服务器。如果推荐策略需要 SSL/TLS,则它会通过 SSL/TLS 进行连接。然后,它使用与先前服务器一起使用的 binddn credentials
绑定到新服务器,并执行生成引用的操作。 此功能对用户是透明的。
LDAP 连接的端口号为:
- 389 用于不安全的 LDAP 连接(对于纯文本 LDAP)
- 636 用于安全 LDAP 连接(适用于 SSL LDAP)
- 3268 适用于 Microsoft 不安全 LDAP 连接(适用于纯文本全局编录服务器)
- 3269 用于 Microsoft 安全 LDAP 连接(适用于 SSL 全局编录服务器)
下表包含 LDAP 服务器的用户属性字段示例:
LDAP 服务器 | 用户属性 | 区分大小写 |
---|---|---|
Microsoft Active Directory 服务器 | sAMAccountName | 否 |
Novell eDirectory | ou | 是 |
IBM 目录服务器 | uid | 是 |
Lotus Domino | CN | 是 |
Sun ONE 目录(以前称为 iPlanet) | uid 或 cn | 是 |
下表包含基本 DN 的示例:
LDAP 服务器 | 基本 DN |
---|---|
Microsoft Active Directory 服务器 | DC=citrix ,DC=local |
Novell eDirectory | ou=users,ou=dev |
IBM 目录服务器 | cn=users |
Lotus Domino | OU=City,O=Citrix , C=US |
Sun ONE 目录(以前称为 iPlanet) | ou=People,dc=citrix ,dc=com |
下表包含绑定 DN 的示例:
LDAP 服务器 | Bind DN(绑定 DN) |
---|---|
Microsoft Active Directory 服务器 | CN=Administrator, CN=Users, DC=citrix , DC=local |
Novell eDirectory | cn=admin, o=citrix
|
IBM 目录服务器 | LDAP_dn |
Lotus Domino | CN=Notes Administrator, O=Citrix , C=US |
Sun ONE 目录(以前称为 iPlanet) | uid=admin,ou=Administrators, ou=TopologyManagement,o=NetscapeRoot |
有关设置一般身份验证策略的详细信息,请参阅 身份验证策略。有关策略规则中使用的 NetScaler 表达式的更多信息,请参阅 策略和表达式。
使用 CLI 创建 LDAP 身份验证服务器
在命令提示符下,键入以下命令:
add authentication ldapAction <name> {-serverIP} <ip\_addr|ipv6\_addr|> | {-serverName <string>}}
示例
add authentication ldapAction ldap_server -serverip 1.1.1.1 -serverName ldap_test
使用 GUI 创建 LDAP 身份验证服务器
-
导航到系统 > 身份验证 > 基本策略 > LDAP > 服务器 > 添加。
-
在创建身份验证 LDAP 服务器页面上,配置 LDAP 服务器的参数。
-
单击 Create(创建)。
使用 CLI 启用身份验证策略
add authentication ldappolicy <name> <rule> [<reqAction>]
示例:
add authentication ldappolicy ldap-service-policy ns_true ldap_Server
使用 GUI 创建 LDAP 身份验证策略
-
导航到 系统 > 身份验证 > 基本策略 > LDAP > 策略 > 添加。
-
在创建身份验证 LDAP 策略页面上,配置 LDAP 策略的参数。
-
单击 Create(创建)。
注意
您可以通过安全选项卡配置 LDAP 服务器/策略。导航到安全 > AAA-应用程序流量 > 策略 > 身份验证 > 基本策略 > LDAP > 服务器/策略。
使用 CLI 启用 LDAP 引用支持
在命令提示符下,键入以下命令:
set authentication ldapAction <name> -followReferrals ON
set authentication ldapAction <name> -maxLDAPReferrals <integer>
<!--NeedCopy-->
示例
set authentication ldapAction ldapAction-1 -followReferrals ON
set authentication ldapAction ldapAction-1 -maxLDAPReferrals 2
<!--NeedCopy-->
对 LDAP 用户的基于密钥的身份验证支持
使用基于密钥的身份验证,您现在可以通过 SSH 获取存储在 LDAP 服务器中用户对象上的公钥列表。在基于角色的身份验证 (RBA) 过程中,NetScaler 设备必须从 LDAP 服务器中提取 SSH 公钥。检索到的公钥与 SSH 兼容,必须允许您通过 RBA 方法登录。
在“add authentication ldapAction”和“set authentication ldapAction”命令中引入了一个新属性“sshPublicKey”。通过使用此属性,您可以获得以下好处:
- 可以存储检索到的公钥,LDAP 操作使用此属性从 LDAP 服务器检索 SSH 密钥信息。
- 可以提取最多 24 KB 的属性名称。
注意
外部身份验证服务器(如 LDAP)仅用于检索 SSH 密钥信息。它不用于身份验证目的。
以下是通过 SSH 传送事件的示例:
- SSH 守护进程将密码字段为空的 AAA_AUTHENTICATE 请求发送到身份验证、授权和审核守护程序端口。
- 如果将 LDAP 配置为存储 SSH 公钥,则身份验证、授权和审核将使用“sshPublicKey”属性和其他属性进行响应。
- SSH 守护程序使用客户端密钥验证这些密钥。
- SSH 守护进程在请求负载中传递用户名,身份验证、授权和审核将返回特定于此用户的密钥以及通用密钥。
要配置 sshPublicKey 属性,请在命令提示符下键入以下命令:
-
通过添加操作,您可以在配置
ldapAction
命令时添加“sshPublicKey”属性。add authentication ldapAction <name> {-serverIP <ip_addr|ipv6_addr|*> | {-serverName <string>}} [-serverPort <port>] … [-Attribute1 <string>] … [-Attribute16 <string>][-sshPublicKey <string>][-authentication off] <!--NeedCopy-->
-
通过设置操作,您可以将“sshPublicKey”属性配置为已添加的 ldapAction 命令。
set authentication ldapAction <name> [-sshPublicKey <string>][-authentication off] <!--NeedCopy-->
LDAP 身份验证的名称-值属性支持
现在,您可以使用唯一的名称和值来配置 LDAP 身份验证的属性。名称在 LDAP 操作参数中配置,通过查询名称来获取值。通过使用此功能,NetScaler 设备管理员现在可以获得以下好处:
- 通过按名称(而不仅仅是按值)记住属性,最大限度地减少管理员的工作量
- 增强搜索功能,以查询与名称关联的属性值
- 提供提取多个属性的选项
要在 NetScaler 设备命令提示符下配置此功能,请键入:
add authentication ldapAction <name> [-Attributes <string>]
<!--NeedCopy-->
示例
add authentication ldapAction ldapAct1 -attributes "company, mail"
<!--NeedCopy-->
支持验证端到端 LDAP 身份验证
NetScaler 设备现在可以通过 GUI 验证端到端 LDAP 身份验证。为了验证此功能,GUI 中引入了一个新的“测试”按钮。NetScaler 设备管理员可以使用此功能实现以下好处:
- 整合整个流程(数据包引擎 — NetScaler AAA 守护进程 — 外部服务器)以提供更好的分析
- 缩短验证和故障排除与单个场景相关的问题的时间
您可以通过两种方式使用 GUI 配置和查看 LDAP 端到端身份验证的测试结果。
“从系统”选项
- 导航到系统 > 身份验证 > 基本策略 > LDAP,单击服务器选项卡。
- 从列表中选择可用的 LDAP 操作 。
- 在 配置身份验证 LDAP 服务器 页面上,向下滚动到 连接设置 部分。
-
单击 测试网络连接 以检查 LDAP 服务器连接。您可以查看成功连接到 LDAP 服务器的弹出消息,其中包含 TCP 端口详细信息和有效凭据的真实性。
- 要查看端到端 LDAP 身份验证,请单击端到端登录测试链接。
- 在端到端登录测试页面中,单击测试。
- 在身份验证页面上,输入有效的凭据以登录。此时将显示成功屏幕。
- 如果身份验证失败,将显示错误屏幕。
从“身份验证”选项中
- 导航到身份验证 > 控制板,从列表中选择可用的 LDAP 操作。
- 在配置身份验证 LDAP 服务器页面上,连接设置部分下有两个选项。
- 要检查 LDAP 服务器连接,请单击测试 LDAP 可访问性选项卡。您可以查看成功连接到 LDAP 服务器的弹出消息,其中包含 TCP 端口详细信息和有效凭据的真实性。
- 要查看端到端 LDAP 身份验证状态,请单击测试最终用户连接链接。
-
在测试最终用户连接页面上,单击测试。
- 在身份验证页面上,输入有效的凭据以登录。此时将显示成功屏幕。
- 如果身份验证失败,将显示错误屏幕。
LDAP 身份验证的 14 天密码到期通知
NetScaler 设备现在支持基于 LDAP 的身份验证的 14 天密码到期通知。通过使用此功能,管理员可以通知最终用户密码过期阈值时间(以天为单位)。14 天密码到期通知是自助服务密码重置 (SSPR) 的前奏。
注意:
密码过期通知的最大值或阈值时间(以天为单位)为255天。
密码到期通知的优点
- 允许用户自行重置密码,并为管理员提供一种灵活的方式,以便在几天之内通知最终用户其密码到期。
- 消除了最终用户跟踪密码过期天数的依赖。
- 将通知发送到VPN门户页面给用户(基于天数),以便在到期前更改密码。
注意
此功能仅适用于基于 LDAP 的身份验证方案,不适用于 RADIUS 或 TACACS。
了解 14 天密码通知
NetScaler 设备从 LDAP 身份验证服务器获取两个属性 (Max-Pwd-Age and Pwd-Last-Set
)。
- Max-Pwd-Age。此属性表示密码有效之前的最长时间(以 100 纳秒为间隔)。该值存储为一个大整数,表示从设置密码到期之前的100纳秒间隔数。
- Pwd-Last-Set。此属性确定上次更改帐户密码的日期和时间。
通过从 LDAP 身份验证服务器获取这两个属性,NetScaler 设备可以确定特定用户的密码到期的剩余时间。在身份验证服务器上验证任何用户凭据并向用户发送通知时,将收集此信息。
set aaa parameter
命令中引入了一个新参数“pwdExpiryNotification”。通过使用此参数,管理员可以跟踪密码过期的剩余天数。NetScaler 设备现在可以开始通知最终用户密码到期了。
注意
目前,此功能仅适用于具有实现 LDAP 的 Microsoft AD 服务器的身份验证服务器。稍后将针对基于 OpenLDAP 的服务器的支持。
以下是设置 14 天密码到期通知的事件流程示例:
- 管理员使用 NetScaler 设备设置密码到期时间(14 天)。
- 用户发送 HTTP 或 HTTPS 请求以访问后端服务器上的资源。
- 在提供访问权限之前,NetScaler 设备会使用 LDAP 身份验证服务器上配置的内容验证用户凭证。
- 除了向身份验证服务器发出的查询外,NetScaler 设备还会传送获取这两个属性的详细信息的请求 ()
Max-Pwd-Age and Pwd-Last-Set
。 - 根据密码过期的剩余时间,将显示到期通知。
- 然后,用户将采取适当的操作来更新密码。
使用命令行界面配置 14 天到期通知
注意
可以为无客户端 VPN 和完整 VPN 使用案例配置 14 天到期通知,而不为 ICA 代理配置 14 天过期通知。
在命令提示符下,键入以下命令:
set aaa parameter –pwdExpiryNotificationDays <positive_integer>
show aaa parameter
<!--NeedCopy-->
示例
> set aaa parameter -pwdExpiryNotificationDays 14
Done
> show aaa parameter Configured AAA parameters EnableStaticPageCaching: YES EnableEnhancedAuthFeedback: NO DefaultAuthType: LOCAL MaxAAAUsers: Unlimited AAAD nat ip: None EnableSessionStickiness : NO aaaSessionLoglevel : INFORMATIONAL AAAD Log Level : INFORMATIONAL Dynamic address: OFF
GUI mode: ON
Max Saml Deflate Size: 1024 Password Expiry Notification Days: 14
<!--NeedCopy-->
使用 GUI 配置 14 天过期通知
- 导航到 安全 > AAA-应用程序流量 > 身份验证设置。
- 单击 更改身份验证 AAA 设置。
-
在配置 AAA 参数页面上,在密码到期通知(天数) 字段中指定天数。
-
单击“确定”。通知显示在 VPN 门户页面的右上角。