Skip to content

快速参考

  • 由……维护: (注:原文中“Maintained by:”后面应该会有具体的维护者信息,若有完整内容,翻译会更加准确。这里仅根据给定的部分进行了翻译。)
    身份 Python 项目

  • 哪里可以获得帮助:
    身份 Python 邮件列表或身份 Python Slack 工作区(邀请)

支持的标签及各自的 Dockerfile 链接

(在常见问题解答中查看“‘共享’标签和‘简单’标签之间的区别是什么?”)

简单标签

共享标签

快速参考(续)

什么是 SATOSA?

SATOSA 是一个可配置的代理,用于在不同的身份验证协议(如 SAML2、OpenID Connect 和 OAuth2)之间进行转换。

logo

如何使用此图像

要启动一个 SATOSA 实例

启动 satosa 实例的基本模式为:

docker run --name some-satosa -d satosa

要从主机访问实例而不使用容器的 IP,可使用端口映射:

docker run --name some-satosa -p 80:8080 -d satosa

在启动时,入口点脚本将 SAML2 元数据输出到容器日志中。此元数据指的是实例的基本 URL,例如 https://example.com 。浏览器必须能够通过 HTTPS 访问该实例。

如何扩展此图像

配置文件

satosa 图像将其配置存储在 /etc/satosa 中。此配置必须在实例之间保持持久,特别是 SAML2 实体 ID(默认情况下从代理的基本 URL 派生)和相关的密钥材料。使用卷、绑定挂载或自定义映像来维护此配置。

入口点脚本

如果第一个参数看起来像命令行标志, satosa 图像的入口点脚本默认情况下会运行 Gunicorn。例如,以下操作将使用绑定挂载为实例提供 X.509 证书和相应的私钥,并且它将在启用 HTTPS 的情况下运行 Gunicorn:

docker run --name some-satosa -p 443:8443 \
    -v /etc/letsencrypt/live/some-satosa/fullchain.pem:/etc/https.crt \
    -v /etc/letsencrypt/live/some-satosa/privkey.pem:/etc/https.key \
    -d satosa \
    -b0.0.0.0:8443 --certfile /etc/https.crt --keyfile /etc/https.key satosa.wsgi:app

如果第一个参数看起来像一个命令而不是一个标志,入口点脚本将运行该命令而不是 Gunicorn。例如,以下操作将在容器内启动一个交互式的、非特权的 shell:

docker run -it --name some-satosa satosa bash

环境变量

入口点脚本使用环境变量来生成初始配置,该配置将 SATOSA 设置为免费的 SAMLtest.ID 测试服务提供商和测试身份提供商之间的 SAML2 代理。所有环境变量都是可选的。

环境变量的值可以从 Docker 机密中读取。在变量名后添加 _FILE (例如, STATE_ENCRYPTION_KEY_FILE ),并将其设置为相应机密的路径名(例如, /run/secrets/state_encryption_key )。

BASE_URL

SATOSA 必须托管在网站的根目录。此环境变量可选择指定网站的基本 URL,默认为 http://example.com 。如果设置,基本 URL 必须是一个方法加上一个主机名,且没有任何尾随斜杠或路径组件,例如 https://idproxy.example.com ,而不是 https://idproxy.example.com/https://idproxy.example.com/satosa

STATE_ENCRYPTION_KEY

SATOSA 使用加密的 Cookie 来跟踪身份验证流程的进度。此环境变量可选择设置状态 Cookie 的加密密钥。如果设置,状态加密密钥必须是字母数字值,例如 12345SameAsMyLuggage 。如果未指定,将生成一个新的随机 32 字符密钥。

SAML2_BACKEND_DISCO_SRV

当作为 SAML2 多边联盟的一部分时,SATOSA 将使用 SAML 发现服务要求用户选择身份提供者。此环境变量可选择设置发现服务 URL,默认值为 SeamlessAccess 。

SAML2_BACKEND_CERTSAML2_BACKEND_KEY

SATOSA 的 SAML2 后端的作用类似于服务提供商(依赖方),向用户的身份提供商请求身份验证和属性。它使用公钥密码术对身份验证请求进行签名并解密响应。这些可选的环境变量以 PEM 格式保存后端的配对公钥和私钥。如果未指定,将使用 BASE_URL 的主机名部分生成一个新的 2048 位 RSA 密钥对。

SAML2_FRONTEND_CERTSAML2_FRONTEND_KEY

SATOSA 的 SAML2 前端的作用类似于身份提供者(凭证服务提供者),处理来自受信任网站的身份验证请求,并将用户属性返回给这些网站。它使用公钥密码术对身份验证响应进行签名。这些可选的环境变量保存前端配对的公钥和私钥,同样采用 PEM 格式。如果未指定,将使用 BASE_URL 的主机名部分生成一个新的 2048 位 RSA 密钥对。

图像变体

satosa 图像有多种类型,每种都针对特定的用例而设计。

satosa:<version>

这是事实上的映像。如果您不确定自己的需求是什么,您可能想要使用这个。它被设计为既可以用作一次性容器(挂载您的源代码并启动容器以启动您的应用程序),也可以作为构建其他映像的基础。

其中一些标签的名称中可能包含“bookworm”之类的字样。这些是 Debian 发行版的套件代号,表明该映像所基于的发行版。如果您的映像需要安装除映像自带的软件包之外的任何其他软件包,您可能需要明确指定其中之一,以在 Debian 有新版本发布时最大程度地减少损坏。

satosa:<version>-alpine

此图像基于流行的 Alpine Linux 项目,可在 alpine 官方镜像中获取。Alpine Linux 比大多数发行版基础镜像(约 5MB)小得多,因此总体上会生成更精简的镜像。

当您首要关注的是最终图像大小尽可能小的时候,此变体是有用的。需要注意的主要警告是,它确实使用 musl libc 而不是 glibc 及相关库,因此软件往往会根据其对 libc 要求/假设的深度而遇到问题。有关可能出现的问题以及使用基于 Alpine 的图像的一些利弊比较的更多讨论,请参阅此 Hacker News 评论线程。

为尽量减小镜像大小,在基于 Alpine 的镜像中通常不会包含其他相关工具(例如 gitbash )。以该镜像为基础,在您自己的 Dockerfile 中添加您需要的内容(如果您不熟悉如何安装软件包,请参阅 alpine 镜像说明中的示例)。

许可证

查看此映像中所包含软件的许可证信息。

与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。

一些能够自动检测到的额外许可信息可能会在 repo-info 存储库的 satosa/ 目录中找到。

对于任何预构建图像的使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。