专栏名称: 运维帮
互联网技术分享平台,分享的力量。帮主一直坚信技术可以改变世界,从毕业到现在干了15年运维,有许多话要和你说。
目录
相关文章推荐
运维  ·  阿里云核心域名被劫持 ·  5 小时前  
51好读  ›  专栏  ›  运维帮

用 Nginx 的 auth_request 模块集成 LDAP 认证

运维帮  · 公众号  · 运维  · 2018-06-13 16:37

正文

请到「今天看啥」查看全文


  • Nginx 的 auth_request 模块 将请求转发给 ldap-auth  这个服务(对应 nginx-ldap-auth-daemon.py),首次肯定会给个 401 .

  • Nginx 将请求转发给 http:// backend / login,后者对应于这里的后端服务。它将原始请求的 uri 写入X-Target ,以便于后面跳转。

  • 后端服务向客户端发送登录表单(表单在 demo 代码中定义)。根据 error_page 的配置,Nginx 将登录表单的 http 状态码返回  200。

  • 用户填写表单上的用户名和密码字段并单击登录按钮,从向 / login 发起 POST 请求,Nginx 将其转发到后端的服务上。

  • 后端服务把用户名密码以 base64 方式写入 cookie。

  • 客户端重新发送其原始请求(来自步骤1),现在有 cookie 了 。Nginx 将请求转发给 ldap-auth 服务(如步骤2所示)。

  • ldap-auth 服务解码 cookie,然后做 LDAP 认证。

  • 下一个操作取决于 LDAP 认证是否成功:

    • 如果认证成功,则 ldap-auth 服务给 Nginx 返回状态码 200。Nginx 从后端服务中请求资源。在 demo 里,后端服务返回以下文本:

         Hello, world! Requested URL: URL
    • 如果认证失败,ldap-auth 服务会返回 401 。Nginx 再次将请求转发给后端服务的 Login(如步骤3),并重复该过程。


    Demo 测试



    Nginx 的配置文件如下,做了些精简,加了中文注释。


    然后分别执行 ./nginx-ldap-auth-daemon.py 和 ./backend-sample-app.py 即可。


    访问 Nginx 的 8081 端口,可以看到他能够重定向到 backend 上去做认证了。


    日志







    请到「今天看啥」查看全文