Задача была отменена

Я пытаюсь совместно использовать identityserver3 и web api (для управления пользователями с помощью токенов Bearer) в одном запуске. Однако я получаю следующую ошибку: Задача была отменена. Похоже, что отмена задачи происходит при запуске при попытке вызвать http://identity_local/core/.well-known/openid-configuration (identity_local указывает на localhost).

Мой стартап выглядит следующим образом:

app.Map("/core", idsrvApp =>
        {
            var factory = new IdentityServerServiceFactory();
            factory.UserService = new IdentityServer3.Core.Configuration.Registration<IUserService, UserService>();
            factory.ScopeStore = new IdentityServer3.Core.Configuration.Registration<IScopeStore>(resolver => scopeStore);
            var options = new IdentityServerOptions
            {
                SigningCertificate = Certificate.Load(),
                IssuerUri = "http://identity_local/core",
                PublicOrigin = "http://identity_local",
                RequireSsl = false, //for now
                Factory = factory,
            };

            idsrvApp.UseIdentityServer(options);
        });

        app.Map("/admin", adminApp =>
        {
            adminApp.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
            {
                Authority = "http://identity_local/core",
                IssuerName = "identity_local",
                ValidationMode = ValidationMode.Local,
                RequiredScopes = new[] { "api", "roles" }
            });

            adminApp.UseResourceAuthorization(new AuthorisationManager());

            var config = new HttpConfiguration();
            config.MapHttpAttributeRoutes();

            adminApp.UseCors(CorsOptions.AllowAll);
            adminApp.UseWebApi(config);

        });

Кто-нибудь знает, если а) возможно ли иметь оба при одном запуске и б) если да, что я сделал неправильно или что я могу сделать, чтобы исправить вышеперечисленное.

1 ответ

Во время запуска UseIdentityServerBearerTokenAuthentication пытается связаться с конечной точкой метаданных IdentityServer, но так как сервер еще не запущен, он не может подключиться, что приводит к ошибке.

Для этой ситуации есть флаг под названием DelayLoadMetadata отложить загрузку метаданных до тех пор, пока они не понадобятся в первый раз: https://identityserver.github.io/Documentation/docsv2/consuming/options.html

Другие вопросы по тегам