首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在代理另一个后端之前检查一个后端的响应

在代理另一个后端之前检查一个后端的响应
EN

Server Fault用户
提问于 2022-11-16 14:28:40
回答 1查看 104关注 0票数 0

我在Nginx前端后面的两个位置有两个后端。后端A使用OAuth实现身份验证。后台B不知道。

我认为为位置B添加身份验证的一种懒散方法是首先将每个请求发送到后端A。我心里想的是:

代码语言:javascript
复制
request for /b/kitten.png --> [ nginx ]
                              [ nginx ] --> request for /index.html --> [backend A]
                            if A responds 200:
                              [ nginx ] --> request for /kitten.png --> [backend B]
                            otherwise return what A returned (redirect to OAuth)

这在Nginx有可能吗?如果不是的话,也许是在OpenR校/HAProxy/Traefik?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2022-11-17 10:45:06

不是一个完整的答案,但有点太长,不能发表评论:

您所描述的设置在概念上类似于一个相当常见的策略:

  • 将身份验证卸载到一个系统
  • 使用反向代理执行只有经过身份验证的客户端才能访问其他应用程序/后端(通过检查请求)。
  • 未经身份验证的客户端被反向代理拒绝(和/或理想情况下,从身份验证提供程序重定向到登录页面,一旦验证成功,就可以重定向回应用程序)
  • 通过身份验证的客户端被授予访问权限。

这需要一种方法来验证客户端在反向代理中提交的标头/cookie/会话令牌。当然,其优点是由反向代理公开的应用程序不必提供它们自己的登录/身份验证方法。

对于nginx来说,一点lua代码似乎是创建这样一个方法的常见方法。

例如,access_by_lua方法通常用于将nginx和keycloak作为身份验证提供程序进行这种集成。参见示例:这里这里

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1115844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档