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 の信頼、トークン検証のポリシーは、この通信経路の選択から独立させてください。

関連記事