Я размещаю свой идентификационный сервер, используя адрес http://10.2.5.90:8000 и использую карту nginx https://10.2.5.90:8888 до http://10.2.5.90:8000.
Когда я пытался запросить документ об обнаружении, например быстрый запуск в клиенте, "Ошибка подключения к http://localhost:8000/.well-known/openid-configuration/jwks. Ссылка на объект не установлена для экземпляра объекта .." .
Я пытался изменить эмитента наАдрес https и используется настроенный DiscoveryDocumentRequest. Но это не сработало.
Когда я удаляю nginx и получаю доступ http://10.2.5.90:8000, Работает хорошо.
IdentityServer: Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// ...other codes
var builder = services.AddIdentityServer(options =>
{
options.Events.RaiseErrorEvents = true;
options.Events.RaiseInformationEvents = true;
options.Events.RaiseFailureEvents = true;
options.Events.RaiseSuccessEvents = true;
options.IssuerUri = "https://10.2.5.90:8888";
});
// ...other codes
}
Клиент: Program.cs
private static async Task<string> GetAccessTokenAsync()
{
var client = new HttpClient();
var req = new DiscoveryDocumentRequest
{
Address = "https://10.2.5.90:8888",
Policy = new DiscoveryPolicy
{
ValidateIssuerName = false,
ValidateEndpoints = false,
}
};
var disco = await client.GetDiscoveryDocumentAsync(req);
if (disco.IsError)
{
Console.WriteLine(disco.Error);
// output: Error connecting to http://localhost:8000/.well-known/openid-configuration/jwks. Object reference not set to an instance of an object..
return null;
}
// ...other codes
}
Редактировать:
Я изменил код при настройке сервера идентификации и он работает при запуске обнаружения.
var builder = services.AddIdentityServer(options =>
{
options.PublicOrigin = "https://10.2.5.90:8888";
});
Однако я все еще не мог получить доступ к своему API. Ошибка: Исключительная ситуация при обработке сообщения. IDX20803: Невозможно получить конфигурацию из: 'http://localhost:8000/.well-known/openid-configuration', и я исследую решение