ブラウザーが ID プロバイダーのログイン ページに到達しても、ASP.NET Core サーバーがプロバイダーのメタデータを取得できることや、トークンを交換できることは証明されません。これらのサーバー側の要求は OpenID Connect のバックチャネルを使用します。

既存の oidc という名前のスキームでは、認証要求が始まる前に、サービスのセットアップ中にそのハンドラーを構成します。

services.Configure<Microsoft.AspNetCore.Authentication.OpenIdConnect
    .OpenIdConnectOptions>("oidc", options =>
{
    options.BackchannelHttpHandler =
        new System.Net.Http.HttpClientHandler
        {
            UseProxy = true,
            Proxy = new System.Net.WebProxy(
                "http://proxy.example.net:8080")
        };
});

oidc を実際に登録されているスキーム名に置き換えます。authority、クライアント、トークン検証の設定はそのままにします。プロキシがアカウントを必要とする場合は、想定する資格情報を WebProxy に添付します。

アプリがすでに options.Backchannel を完全な HttpClient として提供しているか確認します。提供している場合は、そのクライアントの経路を直接構成します。ASP.NET Core は既定のバックチャネルを作成するときに BackchannelHttpHandler を使用するのであり、すでに提供されているクライアントを置き換えるためではありません。

この設定を評価するには、サーバー側で失敗した検出要求またはトークン要求を使用します。公開 HTTP 経路の場合、HTTP プロキシ一覧 が WebProxy アドレスの候補を提供します。ブラウザーのプロキシ ポリシーと無関係な HTTP クライアントには、それぞれ独自の構成経路があります。

関連記事