#proxy #oauth #openid #oauth2 #authorization-header

app ooproxy

一个反向 OpenID Connect 和 OAuth 2 代理,实现客户端凭据流程

4 个稳定版本

1.0.3 2019 年 2 月 4 日
1.0.2 2018 年 12 月 10 日

#10 in #authorization-header

GPL-3.0-only

95KB
512

ooproxy

一个反向 OpenID Connect 和 OAuth 2 代理,实现客户端凭据流程(机器到机器的认证/授权)。它可以用来保护基于 http 的 API 的认证机制。因为它只支持客户端凭据流程,所以认证失败时没有重定向,并且在授权头中只支持载体令牌。

代理有以下优点

  • 资源占用低(CPU / 内存),小的 Docker 镜像
  • 不会对 SSO 服务器造成很大压力,仅在第一次请求时检索新密钥,在密钥轮换时以及在可选的超时时间内

代理支持以下算法

  • RS256
  • RS384
  • RS512
  • HS256
  • HS384
  • HS512

The reverse authentication proxy

配置

可以通过环境变量配置代理

  • 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