如何使用 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 身份验证之上实现用户权限

如何使用 OAuth2 身份验证保护私有数据?

如何使用 oauth2 通过 REST Web 服务进行身份验证

如何使用 Twisted 通过 OAuth2.0 身份验证检查 Gmail

如何使用 Angular 2 进行 oAuth2 基本身份验证?

如何使用 oAuth2 对 SPA 用户进行身份验证?