.Net Core // Azure Active Directory // IDX20804 и IDX20803: невозможно получить конфигурацию из: '[PII скрыт]' - PullRequest
0 голосов
/ 22 января 2019

У нас возникают проблемы при развертывании нашего приложения на нашем тестовом URL.Когда мы получаем доступ к URL-адресу, мы получаем ошибку IDX20804 и IDX20803.(Прямо сейчас наш тестовый URL - это http, а не https. У нас возникают проблемы с сертификатом при доступе через https)

IOException: IDX20804: Невозможно получить документ из: '[PII скрыт]'.InvalidOperationException: IDX20803: невозможно получить конфигурацию из: '[PII скрыт]'. Ссылка на экран ошибки для получения дополнительной информации

В моем файле startup.cs

services.AddAuthentication(sharedOptions =>
        {
            sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        })
        .AddCustomSecurityAzureAd(options => Configuration.Bind("AzureAd", options))
        .AddCookie();

Если я не ошибаюсь [PII скрыт], фактически это ссылка надокумент конфигурации метаданных.Это ссылка на одну из двух ссылок ниже.Я могу получить доступ к этим URL с моей рабочей станции без проблем.https://login.microsoftonline.com/[TenantId]/v2.0/.well-known/openid-configuration https://login.microsoftonline.com/[TenantId]/.well-known/openid-configuration

My AzureAdAuthenticationBuilderExtensions.cs,

private class ConfigureAzureOptions : IConfigureNamedOptions<OpenIdConnectOptions>
    {
        private readonly AzureAdOptions _azureOptions;
        public const string ObjectIdentifierType = "http://schemas.microsoft.com/identity/claims/objectidentifier";

        public ConfigureAzureOptions(IOptions<AzureAdOptions> azureOptions)
        {
            _azureOptions = azureOptions.Value;
        }

        public void Configure(string name, OpenIdConnectOptions options)
        {
            options.ClientId = _azureOptions.ClientId;
            options.Authority = $"{_azureOptions.Instance}{_azureOptions.TenantId}";
            options.UseTokenLifetime = true;
            options.CallbackPath = _azureOptions.CallbackPath;
            options.RequireHttpsMetadata = false;

            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = false,
                //Not sure which token validation parameters to modify...
                /*
                ClockSkew = TimeSpan.FromMinutes(2),
                ValidateIssuer = true,
                ValidateAudience = true,
                ValidateLifetime = true,
                ValidateIssuerSigningKey = true
                */
            };

            options.Events = new OpenIdConnectEvents
            {
                OnAuthenticationFailed = context =>
                {
                    context.Response.Redirect("/Home/Error");
                    context.HandleResponse();
                    return Task.CompletedTask;
                },
                OnTokenValidated = async context =>
                {
                    await TokenValidated(context, options);
                }
            };
        }

TokenValidated () - это отдельный метод в этом методе.Это добавление претензий на основе текущего зарегистрированного пользователя и идентификатора приложения.Я не думаю, что это важно для этого вопроса.

Может быть, я не могу получить доступ к документу конфигурации, потому что мой тестовый URL-адрес http?И документ конфигурации является https?Или, может быть, мне нужно изменить некоторые параметры проверки токена?Я не уверен, что из этого мне нужно изменить.

Дайте мне знать, если мне нужно предоставить какие-либо дополнительные детали.Любая помощь будет принята с благодарностью.Спасибо.

...