使用Traefik ForwardAuth设置身份验证/授权

时间:2020-10-12 19:16:16

标签: spring-boot docker authentication traefik traefik-authentication

我正在使用Docker设置一些服务,Traefik 2充当这些服务的反向代理。 到目前为止,我一直在使用基本身份验证来保护对服务的访问,但是我试图摆脱用户/通过提示。

查看Traefik的文档,发现中间件“ ForwardAuth ”看起来不错。我打算用它代替Basic Auth,但是没有提供完整的实现示例作为示例,并且尝试设置它时很困难。

到目前为止,由于有了Traefik forward-auth,我已经成功地在负责身份验证的远程服务器上调用了特定的URL(该服务器是我自己使用Spring Boot开发的)。我知道,如果认证服务器回答200,则表示“认证成功”,而另一个代码则表示“认证失败”。 但是,我目前无法在远程服务器上编写身份验证代码,因为我不知道如何检查是否必须返回200或其他值。特别是我不知道如何在Traefik和身份验证服务器之间传递信息。

基本上,我遇到的问题是:

  1. 我无法使用Traefik向用户询问其用户名/密码
  2. 当身份验证服务器收到来自Traefik的请求时,无法定义源请求是先前已身份验证的用户

下图显示了我的大部分担忧:

My questions about forward-auth

我想要实现的是以下行为:

  1. 用户尝试访问Docker服务而不输入任何用户名/密码
  2. Traefik确定用户未通过身份验证,这要感谢前向身份验证,它要求身份验证服务器进行身份验证
  3. 身份验证服务器确定用户未通过身份验证,将用户重定向到登录页面
  4. 用户在身份验证服务器上输入其用户名/密码
  5. 用户被重定向到Docker服务
  6. Traefik确定用户已通过身份验证

到目前为止,我可以成功实现步骤1至5,但是我不知道如何实现步骤6。

这是使用ForwardAuth的正确方法吗? 如果是,是否必须使用某些标头来传输身份验证信息?如果没有,使用ForwardAuth是否可以实现我想要的?

0 个答案:

没有答案