Я развернул основное приложение ASP.Net в Azure, которое имеет API, Web-приложение и Identity Server 4. У меня есть атрибут [Authorize] на конечной точке веб-приложения HomeController, чтобы он перенаправлялся на страницу входа в Identity Server.Но при входе в систему я получаю сообщение об ошибке «Произошла ошибка при обработке вашего запроса».
Та же реализация перенаправляет должным образом на локальный IIS и IIS Express без ошибок.Я загрузил самозаверяющий сертификат в Azure.Также установите HttpsOnly = OFF в Azure.Когда я проверяю Cookies во время перенаправления, Cookie сервера идентификации (idsrv.session) загружается на короткое время перед исчезновением.
Код из веб-проекта StartUp.cs
services.AddMvc();
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
options.DefaultAuthenticateScheme = "Cookies";
})
.AddOpenIdConnect("oidc", options =>
{
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false;
options.ClientId = "mvc";
options.ClientSecret = "secret";
options.ResponseType = "code id_token";
options.Scope.Add("MFSAPI.OPERATOR");
options.Scope.Add("offline_access");
options.SaveTokens = true;
options.SignInScheme = "Cookies";
})
.AddCookie("Cookies");
Код из запуска проекта Identity Server.cs
services.Configure<IISOptions>(iis =>
{
iis.AuthenticationDisplayName = "Windows";
iis.AutomaticAuthentication = false;
});
services.AddTransient<IEmailSender, EmailSender>();
services.AddIdentityServer()
.AddSigningCredential(cert)
.AddOperationalStore(options =>
options.ConfigureDbContext = builder =>
builder.UseSqlServer(Configuration.GetConnectionString("IdentityConnection"),
sqlOptions => sqlOptions.MigrationsAssembly(migrationsAssembly)))
.AddConfigurationStore(options =>
options.ConfigureDbContext = builder =>
builder.UseSqlServer(Configuration.GetConnectionString("IdentityConnection"),
sqlOptions => sqlOptions.MigrationsAssembly(migrationsAssembly)))
.AddAspNetIdentity<Users>()
.AddProfileService<ProfileServices>();
Некоторые журналы Identity Server
[INF] Executed action method "Nmicros.Identity.Server.Quickstart.Account.AccountController.Login (Nmicros.Identity.Server)", returned result "Microsoft.AspNetCore.Mvc.RedirectResult" in 902.3143ms. (50a9e262)
[INF] Executing RedirectResult, redirecting to "/connect/authorize/callback?client_id=mvc&redirect_uri=
[INF] Executed action "Nmicros.Identity.Server.Quickstart.Account.AccountController.Login
[INF] Request finished in 1076.9641ms 302 (791a596a)
[INF] Request starting HTTP/1.1 GET
[INF] Invoking IdentityServer endpoint: "IdentityServer4.Endpoints.AuthorizeCallbackEndpoint" for "/connect/authorize/callback" (f7642de5)
[INF] Authorize endpoint response
AuthorizeResponseLog { SubjectId: "1", ClientId: "mvc", RedirectUri: "", State: , Scope: "openid profile MFSAPI.OPERATOR offline_access", Error: null, ErrorDescription: null } (22d160a8)
[INF] AuthenticationScheme: "Identity.Application" signed in. (c66dd7e7)
Я ожидаю, что сервер удостоверений будет правильно перенаправлен на веб-клиент и предоставит токен обновления.Вместо этого, когда я проверяю таблицу постоянных разрешений, у меня есть только authorization_code вместо refresh_token Types.