Для начала: я НЕ эксперт по nginx. Очень новичок в этом.
Я пытаюсь защитить стороннее программное обеспечение с помощью nginx, выполняющего аутентификацию (на самом деле - просто проверяя, что запрос имеет действительный токен носителя OAuth2)
HTTP-запрос будет иметь токен носителя OAuth2 в заголовке Authentication.
например Авторизация: предъявитель eyJhbGciOiJSUzI1NiIsImtpZ....H5w
У меня есть сервер OAuth2 (UAA) с API, с помощью которого я могу вызвать http://myuaa/check_token?token=eyJhbGciOiJSUzI1NiIsImtpZ....H5w, чтобы вернуть 2XX или 4XX, если токен действителен. Сложность заключается в том, что этому серверу требуется базовая аутентификация для вызова конечной точки /check_token.
Я попытался использовать карту для анализа токена из заголовка авторизации, но безуспешно.
Просто как-то в недоумении.
Возможно, это не подходит для Nginx?
соответствующие части nginx.conf
# this map isnt working as I thought it might
http {
...
map $http_authorization $token {
~Bearer(?<token>abc) $token;
}
...
# test just to see if the authorization header is being parsed and passed - no luck
location /oauth {
proxy_set_header X-my-header $token;
proxy_set_header X-another-header value;
proxy_set_header Authorization "Basic basdasdfasdf";
proxy_pass http://localhost:8080;
}
Ожидаемый запрос к стороннему серверу, который защищает nginx:
<GET|POST|PUT|DELETE> /anyurl HTTP1/1.1
..
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZ....H5w
..
Ожидаемый запрос, перенаправленный на сервер UAA для проверки токена
GET /check_token?token=eyJhbGciOiJSUzI1NiIsImtpZ....H5w
..
Authorization Basic asfasdfdf
..