1 个不稳定版本
0.1.0 | 2022年10月7日 |
---|
#8 在 #gotham
14KB
133 行
这是一个简单的便利中间件,用于在Gotham框架Web服务(https://gotham.rs)位于独立服务(例如Apache这样的反向代理)之后时提取认证信息,其中独立服务执行认证并将认证信息填充到请求头中。
lib.rs
:
这是一个简单的便利中间件,用于在Gotham框架Web服务(https://gotham.rs)位于独立服务(例如Apache这样的反向代理)之后时提取认证信息,其中独立服务执行认证并将认证信息填充到请求头中。
在正常使用中,它读取请求头并将一个AuthAssertion
放入Gotham状态数据中,该数据可以被请求处理器或其他中间件访问。
此中间件期望客户端限制、认证和防火墙由反向代理和网络配置处理。但是,它包括处理异常或配置错误情况的便利功能。
处理顺序
- 如果设置了开发模式覆盖,则将提供的AuthAssertion放入Gotham请求状态数据中,并且不会进行进一步检查或处理。这样可以透明地绕过中间件进行软件开发。
- 如果提供了客户端IP地址的白名单,并且请求不是来自这些地址之一,则请求将失败。
- 如果用户ID的头部不存在,则请求将失败。
- 如果提供了包含组成员列表的头的可选名称,并且该头不存在,则请求将失败。
- 否则,AuthAssertion将添加到Gotham请求状态数据中。
此外,如果此中间件读取的任何头部值包含非UTF8数据,则请求将失败。
请求失败的行为是返回一个Gotham HandlerError
,链式一个HeaderAuthMiddlewareError
。您可以选择捕获一些特定的错误,并在您的应用程序中实现307重定向,将用户重定向到认证页面。
提示:如果在测试/开发中,您可以使用类似https://mybrowseraddon.com/modify-header-value.html的浏览器插件来注入头部并模拟来自认证反向代理的输出。
要在您的代码中使用此中间件,请实例化一个HeaderAuthMiddleware
,然后将其附加到您的管道中,例如,使用new_pipeline().add()
。
依赖项
~10–21MB
~280K SLoC