首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用nginx子请求身份验证设置多个cookie

使用nginx子请求身份验证设置多个cookie
EN

Stack Overflow用户
提问于 2022-08-19 11:26:11
回答 1查看 164关注 0票数 1

我正在使用集群中的nginx入口来公开某些服务。我有一个处理身份验证的"auth“服务,我正试图通过nginx来设置它。当前,该服务有一个非常简单的GET端点,它总是使用一个UserId头进行响应,并尝试设置两个cookie:

代码语言:javascript
运行
复制
// This is implemented on Nest.js which uses express.js

@Get('*')
auth(@Res() res: Response): void {
  res.header('UserId', '1')

  res.cookie('key', 'value')
  res.cookie('x', 'y')

  res.status(200).send('hello')
}

当我手动向该端点发送请求时,但当我将其设置为对入口的注释时,我可以确认正在设置两个cookie:

代码语言:javascript
运行
复制
nginx.ingress.kubernetes.io/auth-url: http://auth.dev.svc.cluster.local

并通过入口发送请求,只有一个cookie被转发到响应(第一个key=value)。我不熟悉nginx的配置,我是否应该对其进行更改,以便设置两个cookie?

我在GitHub上找到了GitHub,但是它似乎是关于OAuth2的,对于我应该改变什么没有明确的解释。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-19 13:45:49

我想不出用Set-Cookie头来解决这个问题的方法。不确定是否有更好的方法,但这里有一个解决办法:

我为location块添加了一个片段,它将两个头部转换为cookies:

代码语言:javascript
运行
复制
nginx.ingress.kubernetes.io/configuration-snippet: |
  auth_request_set    $auth_cookie1 $upstream_http_x_header1;
  auth_request_set    $auth_cookie2 $upstream_http_x_header2;
  add_header          Set-Cookie $auth_cookie1;
  add_header          Set-Cookie $auth_cookie2;

auth()端点现在使用X-Header1X-Header2头进行响应:

代码语言:javascript
运行
复制
import { serialize } from 'cookie'

@Get('*')
auth(@Res() res: Response): void {
  res.header('UserId', '1')

  res.header('X-Header1', serialize('key', 'value'))
  res.header('X-Header2', serialize('x', 'y'))

  res.status(200).send('hello')
}

一切看起来都很好,这个解决方案类似于nginx添加的Set-Cookie头,它不支持多个Cookie。下面的代码是从nginx.conf创建的nginx-controller荚中的nginx-controller文件中复制的。

代码语言:javascript
运行
复制
auth_request_set    $auth_cookie $upstream_http_set_cookie;
add_header          Set-Cookie $auth_cookie;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73416058

复制
相关文章

相似问题

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