Я создал веб-приложение https://www.alpacabiriba.com, используя шаблон Visual Studio 2019 (Создать новый проект | Asp. Net Базовое веб-приложение | Angular + Индивидуальные учетные записи пользователей). Я опубликовал это в службе приложений Azure Linux с помощью мастеров VS2019.
Он отлично работает в Azure, за исключением случаев, когда я нажимаю «Получить данные», когда получаю WWW-Authenticate: ошибка носителя = "invalid_token", error_description = "Эмитент 'https://www.alpacabiriba.com' недействителен"
Не могли бы вы помочь кому-нибудь?
Я нашел пару похожих сообщений на здесь, но я не понимаю, что мне нужно делать.
Я изменил как можно меньше, чтобы попытаться заставить его работать, прежде чем я продолжил менять его, чтобы делать вещи Biriba ...
Я изменил его, чтобы загрузить сертификат SSL p12 из / var / ssl / private. Служба приложений Azure поместила его. Это включало мою попытку встроить метод расширения AddApiAuthorization, чтобы обойти его, настаивая на доступ к ключу сертификата из appsettings. json, а не /var/ssl/private.
Я добавил код в void Startup.Configure (приложение IApplicationBuilder, IWebHostEnvironment env) для применения миграции базы данных, когда ru n в Azure.
Чтобы загрузить p12, я изменил ...
services.AddIdentityServer()
.AddApiAuthorization<ApplicationUser, ApplicationDbContext>();
на
var identityServicesServicesColection = services.AddIdentityServer();
identityServicesServicesColection
.AddAspNetIdentity < ApplicationUser > ()
.AddOperationalStore < ApplicationDbContext > ()
//.ConfigureReplacedServices()
.AddIdentityResources()
.AddApiResources()
.AddClients();
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
if (environment == Environments.Development)
{
identityServicesServicesColection.AddSigningCredentials();
}
else
{
var p12 = LoadP12Certificate();
// https://www.domstamand.com/loading-x509-cert-from-azure-keyvault-into-netcore-app/
identityServicesServicesColection.AddSigningCredential(p12);
}
Чтобы применить миграции Я добавил следующее в Startup.Configure (приложение IApplicationBuilder, IWebHostEnvironment env) ...
ApplyAnyPendingMigrations(app);
, который вызывает ...
public void ApplyAnyPendingMigrations(IApplicationBuilder app)
{
using (var serviceScope = app.ApplicationServices.CreateScope())
{
var context = serviceScope.ServiceProvider.GetService<ApplicationDbContext>();
context.Database.Migrate();
if (context.Database.GetPendingMigrations().Any())
{
context.Database.Migrate();
}
}
}