OGC服务(如WPS)的安全代理。
项目描述
- Twitcher(观鸟者)
一个主要关注观察罕见鸟类的观鸟者。 (Leo).
Twitcher是一个针对OWS服务(如Web处理服务WPS)的安全代理。代理服务使用OAuth2访问令牌来保护OWS服务的访问。此外,还可以使用X.509证书进行客户端认证。
实现不仅限于WPS服务。它将被扩展到更多的OWS服务,如WMS(Web地图服务),也可能用于Thredds目录服务。
Twitcher扩展
Weaver中间件由CRIM提供。它是为工作流执行而重新实现的旧Twitcher分支,同时提供了一个用于Web处理服务的Swagger RESTful接口。
Twitcher使用Python的Pyramid网络框架实现。
您可以使用Binder在线尝试Twitcher,或在NBViewer上查看笔记本。
Twitcher是Birdhouse项目的一部分。文档位于ReadTheDocs。
Twitcher的Docker镜像也适用于大多数最近标记的版本。
更改
未发布
0.10.0 (2024-07-22)
更改
删除Python 3.6,3.7支持。
弃用Python 3.8(计划于2024-10结束,支持到那时)。
添加Python 3.12支持。
更新docker使用最新的python:3.11-alpine3.20基础。
0.9.0 (2023-02-08)
更改
为Python 3.9,3.10和3.11添加CI工作流测试,并将3.11默认用于所有linting和覆盖率测试。
在Dockerfile中使用Python 3.11以实现最新的性能改进和安全修复。
将注释类型定义转换为类型注解。
0.8.0 (2023-02-01)
更改
添加与/ows/verify/{service_name}[/{extra_path}]端点类似的/ows/proxy/{service_name}[/{extra_path}]端点,以便仅验证是否允许对特定资源路径进行此服务的访问,以及认证用户,而无需执行代理请求。这可以由服务器和外部实体使用,以验证在执行请求/ows/proxy等效位置可能执行的潜在重量级计算或大数据传输之前,将授予用户授权。此功能的示例用法是使用基于子请求结果的NGINX认证来验证在代理需要通过第一个资源进行认证访问的服务请求之前,验证替代资源。
在twitcher.adapter接口下添加OWS代理的send_request操作,以便在使用派生实现时应用相关的代理调整。默认适配器简单地调用之前直接调用的原始函数,而不是使用适配器的方法。
从OWS代理的send_request中删除extra_path和request_params参数,以便更好地与来自其他适配器方法的参数对齐。这些参数直接从request参数中检索,该参数也作为输入提供给send_request。
0.7.0 (2022-05-11)
更改
向适配器添加请求和响应钩子操作,允许派生实现修改OWS代理请求和从服务返回的响应。默认适配器对原始定义不进行修改。
0.6.2 (2021-12-01)
更改
在每个请求上强制生成OWSRegistry对象,以避免适配器由于每次都需要新事务或刷新数据库会话状态而进行错误处理。
0.6.1 (2021-10-27)
更改
将0.5.x分支的功能更改集成回0.6.x。
将 twitcher.adapter 的特性与 0.6.x 分支的 0.5.x 行为进行对齐。
撤销移除 ServiceStoreInterface 的操作,为外部适配器提供相关实现细节。
将缺失的接口类作为默认实现的基类。
在首页响应中添加 owsproxy_uri。
使用 hybrid_property 提供直接 twitcher.models.Service.verify 设置器,而不是受保护的 _verify。
添加更多日志记录和错误处理,以捕获适配器不返回有效 Service 实例的情况。
将 scoped_session 添加到 session_factory 对象中,以确保并发请求创建不同的连接和事务。
0.6.0 (2020-04-01)
更改
0.5.6 (2021-09-10)
更改
添加 Github Actions 工作流程,用于运行本地测试和 Docker 烟雾测试,以预验证功能和更改。
添加 Github 问题、功能请求和拉取请求模板。
修复
将软件包 pyramid<2、zope.sqlalchemy>=1.5 和 sqlalchemy>=1.4,<2 锁定,以避免与代码中使用的冲突和即将发布的版本及功能发生错误。
修复 Docker 镜像中因缺少 g++ 和 rust 依赖项(通过 cargo 安装 rust)而失败的 cryptography 包构建步骤。
0.5.5 (2021-01-27)
修复
更新 docker 镜像中无效的 python3-dev 引用。Travis-CI 也已更新,在合并之前运行 docker 镜像的烟雾测试构建,以帮助提前发现问题。
0.5.4 (2020-10-29)
更改
通过 gunicorn 替换 waitress 以解决与大型文件慢速下载相关的问题 (#97)。
0.5.3 (2020-02-20)
更改
将 "failed security check" 的日志级别从 exception 降低到 warning,因为它对应于当引发 OWSException 时预期的代码行为(未经授权的访问),而不是输出未处理的错误跟踪信息。
0.5.2 (2019-07-11)
新功能
添加了路由 /info,返回 twitcher.__version__ 的内容。
添加了路由 /versions,返回版本详细信息,例如 Twitcher 应用程序版本和使用的适配器版本。
更改
更新 README.rst 以匹配最近的发展、引用和 docker 镜像链接。
在首页响应中添加 /info 和 /versions 路由的 URI。
对于引发的 OWSException,返回相应的 HTTP 状态代码。
修复
0.5.1 (2019-05-24)
新功能
为使用 sqlalchemy 作为数据库驱动程序时添加 postgres 的额外要求。
更改
对于 AdapterInterface.owsproxy_config,使用 container 而不是 config 以匹配实际使用案例。
修复
改进适配器导入方法,以适应更多用例(Ouranosinc/Magpie#182)。
修复了在Makefile中设置版本升级的错误。
修复了Twitcher main,将twitcher.<module>而不是.<module>包含进来。
0.5.0 (2019-05-22)
更改
跳过了Buildout(《#49》)。
将mongodb替换为sqlalchemy(《#51》)。
简化了Makefile并跳过了conda目标(《#75》)。
为docker、bumpversion和与覆盖率分析相关的任务添加了Makefile目标(《#67》)。
删除了未使用的config模块(《#70》)。
新功能
为构建Twitcher提供了一个《Dockerfile》(《#67》)。
提供了AdapterInterface以允许通过配置设置twitcher.adapter来覆盖存储实现(《#67》)。
使用bump2version自动更新这些“更改”的版本(编号和日期)(《#67》)。
修复
0.4.0 (2019-05-02)
更改
0.3.8 (2018-09-11)
修复
新功能
使受保护路径可配置(《#36》)。
0.3.7 (2018-03-13)
修复
修复了MANIFEST.in中的排除过滤器。
新功能
功能《#28》:在不使用WPS时使用请求上游(例如通过thredds下载文件)。
0.3.6 (2018-03-08)
修复PEP8。
删除了未使用的c4i选项。
添加了用于设置身份验证方法的auth选项。
更新了x509证书使用说明。
新功能
功能《#25》:使用x509证书进行服务身份验证。
0.3.5 (2018-03-01)
修复PEP8。
更新了makefile。
更新了buildout配方。
修复了nginx依赖项。
更新了mongodb 3.4。
在xmlrpc中配置了csrf。
修复了教程示例。
添加了readthedocs、许可和聊天徽章。
0.3.4 (2017-05-05)
更新了日志。
修复:如果不存在,则创建工作目录。
0.3.3 (2017-04-27)
修复了当服务公开时的访问令牌获取。
0.3.2 (2017-01-31)
设置头部X-X509-User-Proxy。
0.3.1 (2017-01-26)
修复PEP8。
设置certfile的权限。
添加了ows-proxy-delegate选项。
0.3.0 (2017-01-11)
修复PEP8。
更改了rpc接口。
添加了twitcher.client模块。
使用esgf scls服务获取凭证。
更新了内部pywps到版本4.0.0。
使用默认端口5000。
增加了ipython笔记本示例。
将namesgenerator移动到顶级。
为Python 3.x/2.x兼容性添加了_compat模块。
添加了twitcher.api并清理了rpcinterface。
添加了具有mongodb和内存实现的twitcher.store。
添加了包含AccessToken和Service的twitcher.datatype。
仅使用https端口。
在owsproxy中错误使用OWSExceptions。
0.2.4 (2016-12-23)
修复PEP8。
在owsproxy中使用replace_caps_url。
固定mongodb=2.6*|3.3.9。
将service_url替换为proxy_url。
添加了wms_130并将wms_111重命名。
0.2.3 (2016-11-18)
修复PEP8。
使用doc2dict,重命名get_service_by_name()。
添加了对c4i令牌的支持。
更新了依赖项:pytest,mongodb。
更新了buildout配方。
修复了功能测试。
0.2.2 (2016-08-18)
修复PEP8。
不允许重复的服务名称。
0.2.1 (2016-08-05)
注册具有公共访问权限的服务。
可以注册WMS服务。
0.2.0 (2016-07-18)
升级到带有独立conda环境的新buildout。
用pytest替换了nose。
更新了安装文档。
0.1.7 (2016-06-09)
修复
服务更新失败(#17)。
0.1.6 (2016-06-01)
更新了文档。
将Python包重命名为pyramid_twitcher。
添加了environment.yml。
使用get_sane_name()。
将httplib2替换为requests。
修复
0.1.5 (2016-04-22)
修复了文档链接
0.1.4 (2016-04-19)
修复了MANIFEST.in
修复了服务数据库索引。
更新了Makefile。
在附录中添加了更多链接。
0.1.0 (2015-12-07)
初始发布。