Обновите токены, которые не создаются для сервера удостоверений 4 в Azure.Только получение авторизационных кодов - PullRequest
0 голосов
/ 08 мая 2019

Я развернул основное приложение 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...