Как развернуть в Azure приложение Razor Pages Asp.Net-Core 2.2 с аутентификацией AzureAD - PullRequest
0 голосов
/ 05 июля 2019

Я создаю новое WebApp с использованием ASP.NET Core 2.2 и Razor Pages и хочу аутентифицировать пользователей с помощью AzureAD. Это хорошо работает локально с localhost, и я могу входить и выходить без проблем. Но когда я публикую его на Azure, я не смогу войти. После того, как Microsoft войдет в систему, я перенаправлюсь на свое веб-приложение на страницу "/.auth/login/done", на которой будет написано: "Вы успешно вошли в систему. Вернитесь к веб-сайт ", и я могу вернуться на свой веб-сайт, но я не вошел в систему.

В регистрации приложений в Azure я настроил URL-адреса перенаправления для localhost и для приложения. Для localhost это выглядит как "https://localhost:44321/.auth/login/aad/callback", а для приложения что-то вроде" https://maywebapp.azurewebsites.net/.auth/login/aad/callback". Я настроил приложение на использование всегда https, чтобы убедиться, что URL-адрес совпадает с настроенным в Azure.

Это моя конфигурация сервиса:

services.AddAuthentication(options =>
            {
                options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
                options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            })
                 .AddOpenIdConnect(options =>
                 {
                     options.Authority = Configuration["Microsoft:Authority"];
                     options.ClientId = Configuration["Microsoft:ClientId"];
                     options.CallbackPath = Configuration["Microsoft:CallbackPath"];
                     options.ResponseType = OpenIdConnectResponseType.IdToken;
                     options.SignedOutRedirectUri = Configuration["Microsoft:SignedOutRedirectUri"];
                     options.TokenValidationParameters.NameClaimType = "name";
                 })
                .AddCookie();

Я ожидаю того же поведения, что и при локальном запуске рабочего приложения.

1 Ответ

0 голосов
/ 08 июля 2019

Чтобы сделать аутентификацию всех обращений к страницам в этой папке, мы могли бы добавить атрибут Authorize ко всем классам модели страниц, но мы можем сделать это лучше. Возвращаясь к классу Startup, мы можем добавить некоторые соглашения Razor Pages, чтобы сделать нашу жизнь проще.

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc()
            .AddRazorPagesOptions(options =>
            {
                options.Conventions.AuthorizeFolder("/Account");
            });
    ...
}

Вот статья о проверке подлинности с помощью бритвы asp.net.

...