nFactor 概念、实体和术语

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

登录架构

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

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

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

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

策略标签

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

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

add authentication policy label mylabel –loginSchema <>

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

虚拟服务器标签

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

下一个因素

无论何时策略绑定到虚拟服务器或策略标签,都可以使用下一个因素指定策略。下一个因素决定了给定身份验证成功时应该执行的操作。如果没有下一个因素,则会结束该用户的身份验证过程。

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

无身份验证策略

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

add authentication policy noauthpolicy –rule <> -action NO_AUTHN

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

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

注意: 检查后续章节中描述无身份验证和直通用法的示例。`

直通系数/标签

一旦用户在虚拟服务器上传递身份验证(对于第一个因素),后续身份验证会发生在策略标签或用户定义的(辅助)因素。 每个策略标签/因素都与登录架构实体关联,以显示该因素的视图。这允许根据用户为达到给定因素而采取的路径自定义视图。

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

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

示例 1:

add authentication policylabel example1

示例 2:

add loginschema passthrough_schema –authenticationSchema noschema

add authentication policylabel example2 –loginschema passthrough_schema

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

  • 当用户显示两个密码字段。在第一个因素之后,第二个因素不需要用户干预

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

直通系数可与 NO_AUTH 策略一起使用,以进行条件跳转。

nFactor 身份验证流程

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

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

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

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

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

  • 添加身份验证策略标签组检查

  • 添加身份验证策略管理员组 - rule http.req.user.is_member_of(“Administrators”) –action NO_AUTHN

  • 添加身份验证策略非管理员 — rule true –action NO_AUTHN

  • 绑定身份验证策略标签组检查 — policy admingroup –pri 1 –nextFactor factor-for-admin

  • 绑定身份验证策略标签组检查 — policy nonadmins –pri 10 –nextfactor factor-for-others

  • 添加身份验证策略 first_factor_policy –rule <> -action <>

  • 绑定身份验证虚拟服务器 <> -policy first_factor_policy –priority 10 –nextFactor groupcheck

下图显示了 nFactor 身份验证流程。

nfactor-flow