身份验证链

了解 身份验证链 帮助解释地理服务器身份验证的工作方式。认证链处理请求并应用某些认证机制。身份验证机制的示例包括:

  • Username/password -通过在外部用户数据库中查找用户信息来执行身份验证

  • 浏览器cookie -通过识别以前发送的浏览器cookie(也称为“记住我”)来执行身份验证。

  • LDAP -对LDAP数据库执行身份验证

  • 匿名 -基本上不执行任何身份验证,并且允许请求在没有任何凭据的情况下继续进行。

在给定的时间内,多个身份验证机制可能在geoserver中处于活动状态。下图说明了一般请求的流程。

../../_images/auth_chain1.png

通过身份验证系统的请求流

在将请求分派到适当的服务或处理程序之前,geoserver首先通过身份验证链过滤请求。请求按顺序传递给链中的每个机制,并且每个机制都有机会对请求进行身份验证。如果链中的某个机制能够成功地进行身份验证,则请求将移动到正常处理。否则,请求不会再路由,并且会向用户返回授权错误(通常是HTTP 401)。

过滤链和提供者链

对于geoserver,认证链实际上由两个链组成:a 过滤链 ,确定是否需要对请求进行进一步身份验证,以及 提供程序链 执行实际身份验证。

../../_images/auth_chain2.png

身份验证链的详细信息,显示过滤器链和提供程序链

过滤链执行各种任务,包括:

  • 从请求收集用户凭据,例如从基本和摘要式身份验证头

  • 处理诸如结束会话(注销)或设置“记住我”浏览器cookie等事件

  • 执行会话集成,检测现有会话并在必要时创建新会话

  • 调用身份验证提供程序链以执行实际身份验证

过滤链实际上在处理请求之前和之后处理了两次。

提供者链只关心执行请求的底层身份验证。当筛选器确定需要身份验证时,它由筛选器链调用。

按请求类型筛选链

不同的 过滤链 可以应用于geoserver中的每种不同类型的请求。这是因为管理员可以为每个过滤器链配置不同过滤器链的列表和匹配规则。只有配置的排序列表的第一个匹配链才会应用于任何给定的请求。

匹配规则可应用于:
  • HTTP方法(get、post等)

  • 请求路径部分的一个或多个Ant模式(例如/wms/ * * );如果指定了多个模式(逗号分隔),则其中任何一个模式都将匹配

  • 为一个或多个指定的Ant模式匹配查询字符串参数的可选正则表达式;如果路径匹配,也检查查询字符串是否匹配;可以在Ant模式之后指定正则表达式,并使用管道()分隔符

蚂蚁模式支持以下通配符:
  • 是吗?匹配一个字符

  • * 匹配零个或多个字符

  • * * 匹配路径中的零个或多个“目录”

查询字符串正则表达式将匹配完整的查询字符串(自动附加^和$终止符),因此要只匹配其中的一部分,请记住为表达式加前缀并用后缀。 * (例如 * 请求=获取能力。 * )

规则示例(Ant模式和查询字符串正则表达式)

模式

描述

/WMS,/WMS/**

简单蚂蚁图案

/wms|.*request=GetMap.*

ant pattern和querystring regex匹配一个参数

/WMS(?=。 request=getmap)(?=. 格式=图像/png)。*

ant pattern和querystring regex以任意顺序匹配两个参数

/WMS(?=。 request=getmap)(?!. 格式=图像/png)。*

ant pattern和querystring regex匹配一个参数,并确保另一个参数不匹配