Citrix ADC

nFactor 概念、实体和术语

本主题介绍了参与 nFactor 身份验证的一些主要实体及其重要性。

登录架构

nFactor 将“视图”(用户界面)与运行时处理的“模型”分离。nFactor 的视图由登录架构定义。登录架构是一个实体,用于定义用户看到的内容并指定如何从用户中提取数据。

为了定义视图,登录架构将指向磁盘上定义登录表单的文件。此文件应符合“Citrix 通用表单协议”的规范。此文件本质上是登录表单的 XML 定义。

除了 XML 文件之外,登录架构还包含高级策略表达式,用于从用户的登录请求中收集用户名和密码。这些表达式是可选的,如果用户提供的用户名和密码带有预期的表单变量名称,则可以省略这些表达式。

登录架构还定义了是否应将当前凭据集用作默认的单点登录凭据。

策略标签

策略标签是策略的集合。这是一个对 Citrix ADC 的策略基础结构并不陌生的结构。策略标签定义了身份验证因素。也就是说,它包含确定是否满足用户提供的凭据所需的所有策略。策略标签中的所有策略都可以假定为同质策略。身份验证的策略标签不能采取不同类型的策略,例如重写。换句话说,策略标签中的所有策略主要验证用户提供的同一密码/凭据。policyLabel 中的策略的结果遵循逻辑 OR 条件。因此,如果第一个策略指定的身份验证成功,则会跳过其后的其他策略。

可以通过执行以下 CLI 命令来创建策略标签:

add authentication policy label mylabel –loginSchema <>
<!--NeedCopy-->

策略标签将登录架构视为属性。登录架构定义该策略标签的视图。如果未指定登录架构,隐式登录架构 LSCHEMA_INT 将与该策略标签相关联。登录架构决定策略标签是否成为直通。

虚拟服务器标签

在 Citrix ADC 的高级策略基础结构中,虚拟服务器也属于隐式策略标签。这是因为虚拟服务器还可以绑定多个策略。但是,虚拟服务器是特殊的,因为它是客户端流量的入口点,可以采取不同类型的策略。它在虚拟服务器中放置在自己的标签下的每个策略。因此,虚拟服务器是标签的集合。

下一个因素

每当策略绑定到虚拟服务器或策略标签时,都可以使用下一个因素来指定该策略。下一个因素决定了在给定的身份验证成功时应该怎么做。如果没有下一个因素,该用户的身份验证过程将结束。

绑定到虚拟服务器或策略标签的每个策略都可以有不同的下一个因素。这样可以实现最大的灵活性,其中每个策略的成功都可以为用户的身份验证定义新路径。管理员可以利用这一事实,为不符合某些策略的用户制定巧妙的回退因素。

无身份验证策略

nFactor 引入了一种名为 NO_AUTHN 的特殊内置策略。NO_AUTHN 策略始终返回成功作为身份验证结果。通过执行以下 CLI 命令,可以创建无身份验证策略:

add authentication policy noauthpolicy –rule <> -action NO_AUTHN
<!--NeedCopy-->

根据该命令,无身份验证策略采用的规则可以是任何高级策略表达式。NO_AUTHN 的身份验证结果始终成功。

无身份验证策略本身似乎不会增加值。但是,当与直通策略标签一起使用时,它可以提供极大的灵活性来做出逻辑决策以推动用户身份验证流程。NO_AUTHN 策略和直通因素为 nFactor 的灵活性提供了一个新的维度。

注意: 请在后续章节中查看描述无认证和直通使用情况的示例。

直通因素/标签

一旦用户在虚拟服务器上通过身份验证(对于第一个因素),后续身份验证将以策略标签或用户定义的(次要)因素进行。 每个策略标签/因素都与登录架构实体关联,以显示该因素的视图。这允许根据用户获得给定因素所需的路径自定义视图。

有一些专门的策略标签没有明确指向登录架构。专用的策略标签指向实际上并不指向视图的 XML 文件的登录架构。这些策略标签/因素被称为“直通”因素。

通过执行以下 CLI 命令可以创建直通因素:

示例 1:

add authentication policylabel example1
<!--NeedCopy-->

示例 2:

add loginschema passthrough_schema –authenticationSchema noschema

add authentication policylabel example2 –loginschema passthrough_schema
<!--NeedCopy-->

直通因素意味着身份验证、授权和审核子系统不应返回到用户以获取该因素的凭据集。相反,这是对于继续使用已获得的凭据的身份验证、授权和审核的提示。这在不需要用户干预的情况下很有用。例如,

  • 向用户提供两个密码字段时。在第一个因素之后,第二个因素不需要用户干预

  • 当某种类型的身份验证(例如证书)完成时,管理员需要为该用户提取组。

直通因素可以与 NO_AUTH 策略结合使用,以进行有条件的跳跃。

nFactor 身份验证流程

身份验证始终从 nFactor 中的虚拟服务器开始。虚拟服务器为用户定义了第一个因素。用户看到的第一种形式由虚拟服务器提供。用户可以使用登录架构策略在虚拟服务器上自定义用户看到的登录表单。如果没有登录架构策略,则会向用户显示单个用户名和密码字段。

如果必须在自定义表单上向用户显示多个密码字段,则必须使用登录架构策略。它们允许根据配置的规则显示不同的表单(例如 Intranet 用户与外部用户、服务提供商 A 与服务提供商 B)。

发布用户凭据后,身份验证将从身份验证虚拟服务器开始,这是第一个因素。由于身份验证虚拟服务器可以配置多个策略,因此每个策略都按顺序进行评估。在任何给定时刻,如果身份验证策略成功,则采用针对该策略指定的下一个因素。如果没有下一个因素,身份验证过程将结束。如果存在下一个因子,则检查该因素是直通因素还是常规因素。如果是直通,则在无需用户干预的情况下评估该因素的身份验证策略。否则,将向用户显示与该因素关联的登录模式。

使用直通因素和无身份验证策略做出逻辑决策的示例

管理员希望根据组决定下一个因素。

  • Add authentication policylabel group check

  • Add authentication policy admin group –rule http.req.user.is_member_of(“Administrators”) –action NO_AUTHN

  • Add authentication policy nonadmins –rule true –action NO_AUTHN

  • Bind authentication policy label group check –policy admingroup –pri 1 –nextFactor factor-for-admin

  • Bind authentication policy label groupcheck –policy nonadmins –pri 10 –nextfactor factor-for-others

  • Add authentication policy first_factor_policy –rule <> -action <>

  • Bind authentication vserver <> -policy first_factor_policy –priority 10 –nextFactor groupcheck

nFactor 概念、实体和术语