Nginx proxy_pass: поместить тело ответа в файл cookie

совершенно новый для nginx, я пытаюсь реализовать некоторый веб-поток oauth2:

  • клиент просит логин,
  • nginx, который я использую в качестве обратного прокси-сервера, перенаправляет на поставщика аутентификации,
  • nginx передает обратный вызов поставщику аутентификации, получая токен аутентификации с заданным кодом,
  • у клиента есть токен.

Меня это не устраивает, я хотел бы поместить токен аутентификации в файл cookie только для http, и я уверен, что nginx может это сделать, но я не уверен, как это сделать... Что я пробовал до сих пор:

      location /callback {
  proxy_method POST;
  add_header Accept application/json;
  proxy_pass https://myauthprovider?client_id=theclientid&redirect_uri=theredirecturi&client_secret=thesecret&code=$arg_code;
  add_header Set-Cookie "payload=whattoputhere?";
}

The add_headerбыла моя первая попытка, но я не могу найти ничего, чтобы получить тело ответа в местоположении nginx.
Поэтому я добавилnjsмодуль иjs_body_filter jwt_auth.setcookieswithtoken;к/callbackрасположение:

      location /callback {
  proxy_method POST;
  add_header Accept application/json;
  js_body_filter jwt_auth.setcookieswithtoken;
  proxy_pass https://myauthprovider?client_id=theclientid&redirect_uri=theredirecturi&client_secret=thesecret&code=$arg_code;
  add_header Set-Cookie "payload=whattoputhere?";
}

Вот .js:

      function setcookieswithtoken(req, data, flags) {
  var payload = data.split("&");
  var token = payload[0].substring(payload[0].indexOf("=") + 1);
  ngx.log(ngx.ERR, ">>>>>>token: " + token);
  ngx.log(ngx.INFO, ">>>>>>token: " + token);
//  var user = payload[2].substring(payload[2].indexOf("=") + 1);
//  ngx.log(ngx.ERR, ">>>>>>user: " + token);
  var cookies = req.headersOut['Set-Cookie'];
  cookies.push("token=" + token +"; HttpOnly; Secure");
  req.headersOut['Set-Cookie'] = cookies;
  req.sendBuffer(data, flags);
}
export default { setcookieswithtoken };

К сожалению, в ответ не были добавлены файлы cookie. Я также не вижу сообщений об ошибках или информационных сообщений, которые я добавилngx.logчто странно для меня .. Что мне не хватает?

0 ответов

Другие вопросы по тегам