【发布时间】:2021-01-11 14:13:06
【问题描述】:
我开始尝试使用适用于 iOS 应用程序的 IGDB API。几天前,IGDB 推出了 V4,现在需要通过 oAuth2 向 Twitch 授权才能接收应用访问令牌。
由于我糟糕的后端知识(我实际上是昨天开始了解 NGINX),我设法设置了一个 NGINX Web 服务器,它代理对 IGDB API 的请求并将应用程序访问令牌注入 HTTP 标头。这目前工作正常。
我的 nginx.conf 中包含的 proxy.conf 如下所示:
server {
listen 443 ssl;
server_name myhost.com;
#SSL Config cut out
...
location / {
proxy_pass https://api.igdb.com/v4/games;
proxy_ssl_server_name on;
proxy_set_header Client-ID "MY TWITCH APP CLIENT ID";
proxy_set_header Authorization "Bearer THE_APP_ACCESS_TOKEN";
}
}
但是THE_APP_ACCESS_TOKEN 是我手动请求的。出于测试目的,这很好,但是它将在大约 60 天后过期(根据 Twitch 开发文档)。我现在想知道如何动态请求访问令牌(并以某种方式存储它?),在过期时刷新它并将其注入proxy.conf。
在研究时,我偶然发现了 HTTP Auth Request 模块与 NGINX JavaScript 模块 (https://www.nginx.com/blog/validating-oauth-2-0-access-tokens-nginx/) 的结合。
现在我想知道在代理请求之前通过 Auth 请求模块触发令牌请求是否是一种合理的方法,使用 JavaScript 模块解析 JSON 响应并将响应中包含的应用访问令牌作为变量注入到代理的 HTTP 标头。虽然这在理论上对我来说听起来不错,但我几乎不知道如何实现它。此外,这种方法还不包括在令牌过期后立即存储和更新令牌。
您对我如何解决这个问题有一些提示,或者还有其他解决方案吗?
【问题讨论】:
标签: api nginx backend nginx-reverse-proxy twitch-api