Nginx Передача всего URL в прокси-сервер oauth как перенаправление - PullRequest
0 голосов
/ 21 апреля 2020

Я использую кластер 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?

1 Ответ

0 голосов
/ 25 апреля 2020

Пожалуйста, попробуйте описанный ниже процесс, возможно, это поможет !!

  • Добавление параметра состояния поможет для oauth2_proxy

Параметр состояния

Параметр состояния зарезервирует состояние до запроса аутентификации и передаст случайное сгенерированное значение состояния в запросе на аутентификацию, а в запросе обратного вызова они добавят состояние назад, т.е. сгенерированный идентификатор Oauth2_Proxy. Затем Oauth2_Proxy прочитает этот идентификатор и предоставит URL-адрес и ответит.

Используйте ссылку ниже

https://dev.bitly.com/v4_documentation.html

Bitly Oauth2_Proxy добавил туда же код.

https://github.com/bitly/oauth2_proxy/blob/master/providers/provider_default.go#L87 -L89

...