var handler = new HttpClientHandler
{
    Proxy = new WebProxy("http://proxy.example:8080"),
    UseProxy = true
};
var http = new HttpClient(handler);
var documents = new HttpDocumentRetriever(http);

var configuration = await OpenIdConnectConfigurationRetriever.GetAsync(
    "https://issuer.example/.well-known/openid-configuration",
    documents,
    cancellationToken);

HttpDocumentRetriever происходит из Microsoft.IdentityModel.Protocols; OpenIdConnectConfigurationRetriever — из его пакета OpenIdConnect. Держите HTTP-клиент живым на всё время его работы. Для публичных адресов discovery и JWKS, где разрешены публичные посредники, список HTTP-прокси предлагает кандидатов для адреса WebProxy.

Поиск сначала загружает discovery, а затем использует тот же переданный retriever для jwks_uri, когда он есть. Эти адреса могут быть на разных хостах, и прокси должен разрешать оба.

Для аутентификации на прокси настройте учётную запись WebProxy до создания. Это не клиентский секрет издателя.

В долго работающей службе аутентификации передайте этот retriever поддерживаемой схеме кэширования и обновления вместо загрузки конфигурации на каждый входящий запрос. Держите политику издателя, доверия HTTPS и проверки токенов независимой от этого выбора транспорта.

Похожие статьи