如何使用OAuth2身份验证设置traefik

时间:2018-06-12 15:19:28

标签: oauth-2.0 traefik

我使用traefik作为反向代理。我想为入口点设置OAuth2身份验证。 在文档中,我发现Forward Authentication我认为可能对此有用。但该文件过于简单

  

此配置首先将请求转发至http://authserver.com/auth

     

如果响应代码为2XX,则授予访问权限并执行原始请求。否则,将返回验证服务器的响应。

我不知道如何在转发中实现身份验证OAuth2? 我已经尝试了oauth2_proxy,但没有找到解决方案 在这个issue/comment guybrush提供了一个解决方案。但事实上,这是一个双反向代理。

2 个答案:

答案 0 :(得分:9)

我最近为此构建了一个应用程序:https://github.com/thomseddon/traefik-forward-auth

如前所述,它使用转发身份验证,并使用Google OAuth对用户进行身份验证。

此处有一个示例docker compose设置:https://github.com/thomseddon/traefik-forward-auth/blob/master/example/docker-compose.yml

让我知道它是否有帮助!

答案 1 :(得分:1)

让Traefik尽其所能,而不是试图让Traefik支持您的情况,而是使用Keycloak Gatekeeper进行身份验证(并可能授权)。

这将从

更改您的设置
Client -- Traefik -- Service

Client -- Traefik -- Gatekeeper -- Service

这意味着Traefik和Gatekeeper都充当反向代理。

使用这种方法对复杂的身份验证设置进行建模非常简单。但是,潜在的缺点是附加的RP层,因此对于高性能设置,这可能不是理想的解决方案。

请注意Gatekeeper可以与任何OIDC兼容的IdP一起使用,因此您不必运行Keycloak即可使用它。