Обнаружение OIDC через прокси и JWKS в .NET с HttpDocumentRetriever
Передайте HttpClient с поддержкой прокси в retriever, который использует поиск конфигурации Microsoft.IdentityModel, сохранив политику обновления и проверки.
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 и проверки токенов независимой от этого выбора транспорта.