Azure AD / signin-oidc 404 - обратный прокси-сервер NGINX с .NET Core 2.0 - PullRequest
0 голосов
/ 01 июня 2018

У меня есть приложение .NET Core 2.0, работающее в кластере Kubernetes с контейнерами Linux.Перед приложением у меня есть обратный прокси-сервер Nginx, который настроен с использованием LetsEncrypt, SSL-терминации и перенаправления http в приложение.

Мое приложение успешно аутентифицируется и перенаправляет локально (без обратного прокси-сервера) и основано например формы здесь: https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect-aspnetcore

При развертывании эта установка изначально вызывала проблемы с приложением, пытающимся аутентифицировать пользователей, переключаясь с https://my.domain.cloudapp.azure.com на http://my.domain.cloudapp.azure.com. В результате мой ответURL (https://my.domain.cloudapp.azure.com/signin-oidc) не использовался, и я получил ошибку.

Мне удалось исправить это с помощью информации здесь и здесь и, в частности,Я добавил:

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

app.Use(async (context, next) =>
{
    if (context.Request.Host.Host.ToLower() != "localhost")
      context.Request.Scheme = "https";
    await next.Invoke();
});

Теперь, когда я перехожу на https://my.domain.cloudapp.azure.com, я правильно перенаправлен на https://login.microsoftonline.com/. После аутентификации я перенаправлен обратно в свое приложение на https://my.domain.cloudapp.azure.com но промежуточное ПО аутентификации OpenID Connect, похоже, не обрабатывает маршрут / signin-oidc. Вместо этого я получаю сообщение об ошибке 404.

Кто-нибудь знает, что я делаю неправильно?

1 Ответ

0 голосов
/ 13 июля 2018

У меня закончились две проблемы, вызвавшие эту проблему.Во-первых, у меня было несколько пакетов, обслуживающих мое приложение в Kubernetes, и поэтому мне нужно было сохранить ключи шифрования / дешифрования для файлов cookie в центральном местоположении.

Вторая проблема заключалась в том, что обратный прокси-серверпереписывал ответ URLМой проект немного изменился со времени моего первоначального поста, и я переключился на OAuth2 Proxy, поэтому я не уверен в точном сценарии для Nginx в моем оригинальном посте.Однако для Oauth2 Proxy мне пришлось добавить "https://my.domain.cloudapp.azure.com/oauth2/callback" в качестве URL-адреса ответа при регистрации моего приложения.

...