#request-headers #gotham #proxy #authentication #web-services #web #reverse-proxy

gotham_middleware_headerauth

一个基本的中间件,用于在gotham Web服务中使用上游反向代理的请求头数据作为认证源

1 个不稳定版本

0.1.0 2022年10月7日

#8#gotham

Apache-2.0

14KB
133

这是一个简单的便利中间件,用于在Gotham框架Web服务(https://gotham.rs)位于独立服务(例如Apache这样的反向代理)之后时提取认证信息,其中独立服务执行认证并将认证信息填充到请求头中。


lib.rs:

这是一个简单的便利中间件,用于在Gotham框架Web服务(https://gotham.rs)位于独立服务(例如Apache这样的反向代理)之后时提取认证信息,其中独立服务执行认证并将认证信息填充到请求头中。

在正常使用中,它读取请求头并将一个AuthAssertion放入Gotham状态数据中,该数据可以被请求处理器或其他中间件访问。

此中间件期望客户端限制、认证和防火墙由反向代理和网络配置处理。但是,它包括处理异常或配置错误情况的便利功能。

处理顺序

  1. 如果设置了开发模式覆盖,则将提供的AuthAssertion放入Gotham请求状态数据中,并且不会进行进一步检查或处理。这样可以透明地绕过中间件进行软件开发。
  2. 如果提供了客户端IP地址的白名单,并且请求不是来自这些地址之一,则请求将失败。
  3. 如果用户ID的头部不存在,则请求将失败。
  4. 如果提供了包含组成员列表的头的可选名称,并且该头不存在,则请求将失败。
  5. 否则,AuthAssertion将添加到Gotham请求状态数据中。

此外,如果此中间件读取的任何头部值包含非UTF8数据,则请求将失败。

请求失败的行为是返回一个Gotham HandlerError,链式一个HeaderAuthMiddlewareError。您可以选择捕获一些特定的错误,并在您的应用程序中实现307重定向,将用户重定向到认证页面。

提示:如果在测试/开发中,您可以使用类似https://mybrowseraddon.com/modify-header-value.html的浏览器插件来注入头部并模拟来自认证反向代理的输出。

要在您的代码中使用此中间件,请实例化一个HeaderAuthMiddleware,然后将其附加到您的管道中,例如,使用new_pipeline().add()

依赖项

~10–21MB
~280K SLoC