.NET で HttpDocumentRetriever を使ったプロキシ経由の OIDC ディスカバリと JWKS
Microsoft.IdentityModel の構成検索が使う retriever にプロキシ対応の HttpClient を注入し、更新と検証のポリシーはそのまま保ちます。
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 の URL では、HTTP プロキシ一覧が WebProxy の URL の候補を提供します。
検索はまず discovery を取得し、存在すれば同じ retriever を jwks_uri にも使います。これらの URL は別々のホストになることがあり、プロキシは両方を許可する必要があります。
プロキシ認証では、構築前に WebProxy のアカウントを設定します。これは発行者のクライアントシークレットではありません。
長時間動く認証サービスでは、受信リクエストごとに構成をダウンロードするのではなく、この retriever をサポートされるキャッシュと更新の仕組みに渡します。発行者、HTTPS の信頼、トークン検証のポリシーは、この通信経路の選択から独立させてください。