使用Authentik作为自建服务SSO
我在 https://home.yaoyun.xyz 的自建服务的安全认证程度参差不齐: dufs / miniflux 只有 HTTP 认证 Portainer / Photoprism 有完整的用户系统,前者支持内部的用户名 - 密码认证、OAuth 和 LDAP,后者支持 OIDC 和 OAuth Traefik 的 Dashboard、Netdata 的监控无认证,还会暴露敏感信息。 因此,管理多个自建服务时,自建/使用第三方 SSO 就能提供同一水平、集中控制的访问控制。Authentik 是一个开源 SSO,采用免费/开源自建 + 付费支持的商业模式,自称提供最丰富的接口支持,同类替代还有: Keycloak:红帽开发。半年前试用过、对于个人服务太重了,难以维护。开源 + 卖商业支持和进阶 feature。 Authenlia:强调轻量,正在筹款做安全审计。 GitHub - casdoor/casdoor,国人开发。 使用 CF Tunnel + Traefik 反向代理 Authentik 在使用 Authentik 之前,我的自建服务架构是:公网用户 -(https, yaoyun.xyz)-> Cloudflare 反代 -(https, *.cfargotunnel.com)-> CF Tunnel -(…)-[LAN[-> Cloudflared -(http)-> traefik at 80 -(http)-> services ]]。由于 CF Tunnel 访问 Traefik 的 HTTP Entrypoint,送往 Authentik 的 HTTP 请求头中会包含 X-Forwarded-Proto: http。Authentik 网页中的 URL 并非协议相对 URL(protocol-relative URLs),而是根据请求头中的(X-Forwarded-Proto)决定,此处即 HTTP。同时我启用了 CF 的 Always Use HTTPS 和 Edge Certificate,因此公网用户始终使用 HTTPS 访问。此外,CF 的 Automatic HTTPS Rewrites 对 Authentik 还不起效。这一切就成了 Mixed Content Error 的典型例子……...