如何使用 OAuth2 身份验证设置 traefik
Posted
技术标签:
【中文标题】如何使用 OAuth2 身份验证设置 traefik【英文标题】:How to set traefik with OAuth2 authentication 【发布时间】:2018-11-22 01:19:40 【问题描述】:我使用 traefik 作为反向代理。我想为入口点设置 OAuth2 身份验证。 在文档中,我找到了Forward Authentication,我认为它可能对此有用。但是文档太简单了
此配置会先将请求转发到http://authserver.com/auth。
如果响应码为 2XX,则授予访问权限并执行原始请求。否则,返回认证服务器的响应。
我不知道如何在转发中实现身份验证 OAuth2? 我试过oauth2_proxy,但没有找到解决方案。 在这个issue/comment Guybrush 中提供了一个解决方案。但这实际上是一个双重反向代理。
【问题讨论】:
【参考方案1】:我最近为此构建了一个应用程序:https://github.com/thomseddon/traefik-forward-auth
正如您提到的,它使用前向身份验证,并使用 Google OAuth 对用户进行身份验证。
这里有一个 Docker Compose 设置示例:https://github.com/thomseddon/traefik-forward-auth/blob/master/examples/docker-compose.yml。请参阅 traefik.toml 文件以了解如何将 Traefik 配置为指向应用程序。
如果有帮助请告诉我!
【讨论】:
链接现已修复:)【参考方案2】:不要试图让 Traefik 支持你的情况,而是让 Traefik 做它最擅长的事情,而不是使用 Keycloak Gatekeeper 进行身份验证(以及可能的授权)。
这会改变你的设置
Client -- Traefik -- Service
到
Client -- Traefik -- Gatekeeper -- Service
这意味着 Traefik 和 Gatekeeper 都充当反向代理。
使用这种方法对复杂的身份验证设置进行建模非常简单。然而,一个潜在的缺点是额外的 RP 层,因此对于高性能设置,这可能不是一个理想的解决方案。
请注意,Gatekeeper 可以与任何兼容 OIDC 的 IdP 一起使用,因此您无需运行 Keycloak 即可使用它。
【讨论】:
这听起来不错,但是文档在哪里?例子?这如何与多种服务一起使用? 嗨@ricochet1k,你有没有找到任何好的文档。我尝试过,但出现错误:“请求中未找到会话,重定向授权”,“错误”:“未找到身份验证会话”“ 请注意:“Keycloak Gatekeeper 已移至 Louketo Proxy 项目。” - docker hub 上的图片严重过时,他们搬到了 quay.io。以上是关于如何使用 OAuth2 身份验证设置 traefik的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 oauth2 通过 REST Web 服务进行身份验证
如何使用 Twisted 通过 OAuth2.0 身份验证检查 Gmail