使用 API 网关和身份验证服务配置 nginx

Posted

技术标签:

【中文标题】使用 API 网关和身份验证服务配置 nginx【英文标题】:Configuring nginx with an API Gateway & authentication service 【发布时间】:2018-10-31 00:55:51 【问题描述】:

我目前正在我的 nginx 配置中实现一些逻辑,以便我可以处理身份验证和令牌验证。我的逻辑是:

第一种情况:

    用户尝试访问 /login 或 /register 页面。 Nginx 应该将这些调用直接重定向到身份验证服务。 Auth 创建一个令牌并将其发送回给用户。 结束。

第二种情况:

    用户尝试使用令牌访问 /someservice/somepage 页面。 Nginx 应该将此调用重定向到 API 网关。 API Gateway 验证用户是否正在尝试访问受保护的资源,如果是,则验证令牌并发回 2xx 响应。 Nginx 获得 2xx 响应并将用户重定向到 real /someservice Someservice 生成响应并将其发送回用户。 结束。

首先,你觉得这个逻辑合适吗?我应该考虑其他选项身份验证选项吗? 最重要的是,我如何使用 nginx 实现这个逻辑?

我的 nginx 配置如下所示:

http 
  upstream gateway 
    server ...;
  
  upstream auth 
    server ...;
  
  upstream someservice 
    server ...;
  
  server 
    location ^~ /api 
      proxy_pass http://gateway;
      # redirect ???
    
    location /auth 
      proxy_pass http://auth;
    
    location /someservice 
      proxy_pass http://someservice;
    
  

谢谢!

【问题讨论】:

【参考方案1】:

所以最后我通过一些小的调整保留了我的原始配置,比如伟大的auth_request nginx 指令,我按保护级别对功能进行分组,如果用户尝试访问受保护的资源,那么 nginx 将首先通过以下方式验证请求另一个服务。

【讨论】:

以上是关于使用 API 网关和身份验证服务配置 nginx的主要内容,如果未能解决你的问题,请参考以下文章

使用公共微服务对 API 网关 (Kong) 进行身份验证

确保所有 http 请求都通过我的 nginx api 网关

无需托管 API 网关的多个服务的 FastAPI 身份验证

微服务-API网关-身份验证

Kong API 网关中的自定义身份验证服务

使用 K8s Ingress + Python 进行 API 网关身份验证