NGINX - 验证 oauth2 令牌

NGINX - Validate oauth2 token

首先,这是我用来建立 websocket 连接的技术:

我配置了一个 NGINX 实例,它将代理 Web 套接字请求,到目前为止,这个 NGINX 配置在不进行令牌验证的情况下工作正常。

location /wsapp/ {
    proxy_pass http://wsbackend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host; }

想在 NGINX 中验证和终止令牌,但似乎找不到拦截作为 stomp 一部分的令牌的方法 header。有解决办法吗?

为了遇到同样问题的每个人的利益,我设法通过不依赖 stomp 消息交换来进行令牌验证来解决问题。

相反,令牌验证发生在建立 websocket 连接时,令牌通过查询字符串传递。

let socket = new SockJS('https://example.net/wsapp?myjwt=' + token);
stompClient = Stomp.over(socket);

而 NGINX 将使用 auth_jwt 指令进行验证:

auth_jwt "JWT Test Realm" token=$arg_myjwt;

参考: NGINX JWT authentication