実際には、OpenIddictを使用する、または使用しないASP.NETコアアプリケーションに影響を与える非常に一般的な問題です。リバースプロキシレベルでTLS終了を行うと表示されます。この場合、ASP.NETコア実際のスキームが何であるかを知る方法が実際にないため、HttpRequest.Scheme
はであり、https
ではないとみなします。
これを修正するには、OpenIddictを含むすべてのミドルウェアが意図したとおりに動作するように、実際のスキームを復元する必要があります。
これは、Microsoft.AspNetCore.HttpOverrides
パッケージを参照してapp.UseForwardedHeaders()
を呼び出すことによって"forwarded headers" middlewareを使用して行うことができます。
プロキシによっては、使用するヘッダーに合わせて設定を微調整する必要があります。
注:このミドルウェアは、IIS統合パッケージを使用すると自動的に登録されます。あなたはこの構文を使用して、デフォルトのオプションを修正することができます
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders = ForwardedHeaders.XForwardedProto;
});
このアプローチが機能しない場合、あなたはまだインラインミドルウェアを使用してスキームをオーバーライドすることができます。
app.Use((context, next) =>
{
context.Request.Scheme = "https";
return next();
});
あなたのレジスタを確認してくださいそれは他のミドルウェアよりも前です。
デフォルトでは 'ForwardedHeaderOptions.RequireSymmetry'が真であるため、' X-Forwarded-For'は2つのエントリがありますが 'X-Forwarded-Proto'は1であるため、デフォルトオプションはARRの後ろでは動作しません。 ForwardedHeaders = ForwardedHeaders.XForwardedProto'が機能しました。ありがとう。私は app.UseForwardedHeaders(新しいForwardedHeadersOptions(){ ForwardedHeaders = ForwardedHeaders.XForwardedProto、 を})を使用しました。 – pholly