对Web管理界面进行身份验证

Web管理界面 应用程序是大多数提供登录功能的Web应用程序中的典型应用程序。该应用程序主要基于基于表单的身份验证,其中用户通过Web浏览器中的表单进行身份验证。成功进行身份验证后,将在服务器上创建一个会话,从而消除了用户对希望访问的每个页面重复登录过程的需要。还支持可选的“记住我”设置,该设置将身份验证信息存储在客户端cookie中,以允许用户在初始会话超时后绕过基于表单的身份验证。

认证的典型过程如下:

  1. 用户第一次访问Web管理员的主页,因此不存在会话或“记住我”cookie。在这种情况下,用户是匿名认证的。

  2. 用户访问一个安全页面,并显示登录表单。

  3. 成功登录后,将创建会话。根据用于登录的帐户的权限,用户将被定向到请求的页面或被重定向回主页。

  4. 在随后请求安全页面时,用户将通过浏览器会话进行身份验证,直到会话到期或用户注销。

实例

下面显示了Web管理员身份验证链的默认配置。

../../_images/auth_chain_web1.png

地理服务器身份验证链,带有筛选器和提供程序链

在本例中,过滤器链由以下过滤器组成:

  • 会话 -处理会话集成,识别现有会话并根据需要创建新会话

  • 注销 -处理结束会话(用户注销)

  • 表单登录 -处理窗体登录

  • 记住我 -处理“记住我”身份验证、在窗体登录上设置标志时读取、创建适当的cookie以及在将来的请求中识别cookie

  • 匿名 -处理匿名访问

提供者链由两个提供者组成:

  • Root -在 根帐户 有一个特殊的“超级用户”提供者。由于很少使用此帐户,因此很少调用此提供程序。

  • Username/password -对用户数据库执行用户名/密码验证。

下面的示例请求说明了各种链的元素是如何工作的。

首次访问

此示例描述用户首次访问Web管理员主页时的过程。

../../_images/auth_chain_web2.png

用户首次访问的身份验证链

要执行的第一个筛选器是 会话 过滤。它检查现有会话,但未找到任何会话,因此处理将继续到链中的下一个筛选器。这个 注销 过滤器检查用户注销的情况,这也不是这样,因此处理继续进行。这个 表单登录 筛选器检查表单登录名,但也找不到任何登录名。这个 记住我 筛选器确定此请求是否可以从以前的会话cookie进行身份验证,但在本例中不能。要执行的最终筛选器是 匿名 筛选以检查用户是否指定了任何凭据。在这种情况下,用户没有提供任何凭据,因此请求是匿名验证的。由于查看主页不需要身份验证,因此不调用提供程序链。

对请求的最后一个响应将用户导向主页。

用户登录

此示例描述用户通过登录表单登录到Web管理员时调用的过程。

../../_images/auth_chain_web3.png

用户登录的身份验证链

这个 会话 筛选器找不到现有会话,处理继续。这个 注销 筛选检查注销请求,未找到,然后继续。这个 表单登录 筛选器将请求识别为表单登录,并开始身份验证过程。它从请求中提取用户名和密码并调用提供者链。

在提供者链中, Root 提供程序检查根帐户登录名,但找不到,因此处理将继续进行到下一个提供程序。这个 Username/password 提供程序检查提供的凭据是否有效。如果有效,则验证成功,用户将被重定向到主页,并被视为已登录。在后处理步骤中, 会话 筛选器识别已成功进行身份验证并创建新会话。

如果凭据无效,用户将返回到登录表单页并要求重试。

用户访问其他页面

此示例描述已登录的用户访问Web管理中的另一页时调用的过程。

../../_images/auth_chain_web4.png

登录后访问其他页面的用户的身份验证链

这个 会话 筛选器执行并查找仍有效的现有会话。会话包含身份验证详细信息,不需要进一步的链处理。响应是用户请求的页面。

会话超时后用户返回

此示例描述在先前创建的会话超时后,当用户返回到Web管理员时调用的过程。

一段时间后,会话将超时。当用户返回到web admin时,这基本上与用户第一次访问web应用程序的事件链相同(如前所述)。链条延伸至 匿名 匿名验证的筛选器。由于请求的页面可能是需要身份验证的页面,因此用户将被重定向到主页,并且不会登录。

用户登录时设置了“记住我”标志

此示例描述了使用“记住我”标志集登录的过程。

使用“记住我”设置登录的事件链与未设置标志时的过程相同,除非成功验证后 表单登录 筛选器识别“记住我”标志,并触发创建用于保持身份验证信息的浏览器cookie。用户现在已登录并被定向到主页。

会话超时后用户返回(使用“记住我”)。

这个例子描述了当用户在一段时间的不活动后返回到Web管理时调用的过程,同时设置了“记住我”标志。

../../_images/auth_chain_web5.png

使用“记住我”标志在会话超时后返回的用户的身份验证链

即使设置了“记住我”标志,用户在服务器上的会话仍将正常超时。因此,链会相应地通过过滤器,从 会话 筛选器,它找不到有效会话。这个 注销表单登录 此处不应用筛选器。这个 记住我 筛选器识别浏览器cookie并能够对请求进行身份验证。用户将被定向到访问过的任何页面,并保持登录状态。