Я использую кластер Kubernetes с Nginx входной парой веб-приложений. Поскольку Nginx не поддерживает SSO / OID C по умолчанию, я использую oauth_proxy для аутентификации.
Подробно я использую oauth2_proxy (https://github.com/pusher/oauth2_proxy) с Azure ОБЪЯВЛЕНИЕ.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress-internal
namespace: ingress-nginx
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/auth-url: "https://example.com/oauth2/auth"
nginx.ingress.kubernetes.io/auth-signin: "https://example.com/oauth2/start?rd=$escaped_request_uri"
nginx.ingress.kubernetes.io/auth-response-headers: "authorization, x-auth-request-user, x-auth-request-email, x_auth_request_access_token"
spec:
rules:
- host: example.com
http:
paths:
- path: /home(/|$)(.*)
backend:
serviceName: app-homepage-frontend-service
servicePort: 80
- path: /homepage-backend(/|$)(.*)
backend:
serviceName: app-homepage-backend-service
servicePort: 80
Я пропустил некоторые детали, такие как TLS. Так что в целом все работает, только проверенные пользователи могут получить доступ к веб-страницам.
Проблема в том, что мой интерфейс написан на Angular, который использует маршрутизацию ha sh. И если попытаться ввести глубокий маршрут, такой как
https://example.com/home/# / page1 / subpage2
, то просто базовый путь (/ home) передается как URL перенаправления. Поэтому, когда я успешно авторизован, меня перенаправляют на https://example.com/home.
. Есть ли какие-либо проверяемые вместо $ escaped_request_uri, которые передают весь URL?