4 个稳定版本
1.0.3 | 2019 年 2 月 4 日 |
---|---|
1.0.2 | 2018 年 12 月 10 日 |
#10 in #authorization-header
95KB
512 行
ooproxy
一个反向 OpenID Connect 和 OAuth 2 代理,实现客户端凭据流程(机器到机器的认证/授权)。它可以用来保护基于 http 的 API 的认证机制。因为它只支持客户端凭据流程,所以认证失败时没有重定向,并且在授权头中只支持载体令牌。
代理有以下优点
- 资源占用低(CPU / 内存),小的 Docker 镜像
- 不会对 SSO 服务器造成很大压力,仅在第一次请求时检索新密钥,在密钥轮换时以及在可选的超时时间内
代理支持以下算法
- RS256
- RS384
- RS512
- HS256
- HS384
- HS512
配置
可以通过环境变量配置代理
- LISTEN_URL -> 代理监听的 URL
- LISTEN_SSL_URL -> 代理监听的 SSL URL(如果设置了此值,则还需要配置 CERT_FILE)
- PROVIDER_URL -> OpenID 连接提供者根 URL,无尾部斜杠
- UPSTREAM_URL -> 代理的上游 URL(它所保护的资源)
- CLIENT_SECRET -> OpenID 客户端密钥(可选,当使用对称令牌加密算法时是必需的)
- KEY_EXPIRY_SECS -> 每 x 秒检查新 jkws 密钥(可选,默认为无超时)
- UPSTREAM_TIMEOUT_SECS -> 上游请求在 x 秒后超时(可选,默认为 1 小时)
- AUDIENCE -> 验证 "aud" 断言是否与该值匹配(可选,未提供时不验证)。由于 aud 断言可以是数组或单个字符串,因此配置必须为 json 格式。如果想要将其验证为数组,请使用 ["a", "b"];如果想要验证它是确切值,请使用 "c"。
- SUBJECT -> 验证 "sub" 断言是否与该值匹配(可选,未提供时不验证)
- LEEWAY -> 验证令牌时允许发生的时钟偏差的秒数(可选,默认为 0)
- NUM_WORKERS -> 线程数(可选,默认为两个)
- CERT_FILE -> PFX SSL 证书(可选,如果设置了 listen_ssl_url,则需要配置)
- CERT_PASSWORD -> 解密证书的密码(可选)
- RUST_LOG -> 错误、警告、信息、调试或全部(可选,用于启用日志记录)
它还支持从 $PATH 中的 settings.toml 文件加载配置
listen_url = "0.0.0.0:8080'
listen_ssl_url = '0.0.0.0:4443'
cert_file = 'cert.pfx'
cert_password = 'hunter2'
upstream_url = 'http://upstream.com'
provider_url = 'https://my-identity.com'
client_secret = 'secret'
key_expiry_secs = 3600
upstream_timeout_secs = 120
audience = '"my-api"'
subject = 'my-user'
leeway = 3
num_workers = 8
运行
从 docker 运行
docker run-eLISTEN_URL=0.0.0.0:80 -ePROVIDER_URL=https://身份 -e CLIENT_SECRET=secret -e UPSTREAM_URL=https://upstream/ -e RUST_LOG=info -e KEY_EXPIRY_SECS=3600 -e UPSTREAM_TIMEOUT_SECS=60 -e NUM_WORKERS=4 -e AUDIENCE='\"myproxy\"' -e SUBJECT=myuser -e LEEWAY=2 -e CERT_FILE=cert.pfx -e CERT_PASSWORD=hunter2 hal24000/ooproxy:lastest
在Docker外部运行(构建后,使用settings.toml文件)
ooproxy
构建
如果您想在Docker内运行代理
docker build. -t ooproxy
对于带有TLS的Docker镜像使用
docker build. -t ooproxy--build-arg features=tls
或者,如果您想在Docker外部运行代理
cargoinstall ooproxy
带有TLS
cargoinstall ooproxy --all-features
版权
HAL 24000 B.V. 2018
依赖项
~29–42MB
~786K SLoC