将应用程序部署到测试URL时遇到问题。当我们访问URL时,会收到IDX20804和IDX20803错误。 (现在,我们的测试网址是http而不是https。通过https访问时,证书出现问题)
IOException:IDX20804:无法从以下位置检索文档:“ [PII被隐藏]”。 InvalidOperationException:IDX20803:无法从以下位置获取配置:“ [PII被隐藏]”。 Error screen link for more information
在我的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
我的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()是该方法中的一个单独方法。它根据当前登录的用户和应用程序ID添加声明。我认为这个问题并不重要。
也许因为我的测试URL是http而无法访问配置文档?并且配置文件是https? 还是我必须修改一些令牌验证参数?我不确定我需要修改其中的哪个。
让我知道是否需要提供更多详细信息。 任何帮助将不胜感激。谢谢。