編集:SSLオフロードを行うように設定さセットアップのIdentity Server 4リバースプロキシ
nginxのリバースプロキシ:より詳細な説明
我々は次のセットアップを持っています。すべての内部 の通信はHTTPを経由します。リダイレクトの設定は このようなものです:
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Original-For $proxy_add_x_forwarded_for; proxy_set_header X-Original-Proto $scheme; proxy_cache_bypass $http_upgrade;
IS4は
FALSEに設定されているクライアント側のRequireHttpsMetadataでapp.UseIdentityServervar fordwardedHeaderOptions = new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }; fordwardedHeaderOptions.KnownNetworks.Clear(); fordwardedHeaderOptions.KnownProxies.Clear(); app.UseForwardedHeaders(fordwardedHeaderOptions);
前に、次のセットアップを持っています
IS4側では、すべてのクライアントが「リダイレクト」のHTTPSアドレスを持つように設定されています「Uris」と「PostLogoutRedirectUris」を選択します。クライアント側IdentityServerAuthenticationOptionsで
- は、次のように構成されています
new IdentityServerAuthenticationOptions { Authority = "https://[OAUTH_ADDRESS]", ApiName = "[API_NAME]", ApiSecret = "[API_SECRET]", RequireHttpsMetadata = false }
実際に何が起こるかである私たちは、登録IS4内のクライアントのいずれかを訪問しようと要求がリダイレクトされているとき私たちは "Unauthorized client"というメッセージ画面を持っています。さらに、リダイレクトされたリクエストのクエリ文字列を調べた後、戻りURLはHTTPSではなくHTTPであることがわかります。
お知らせください。
NGINXなどのHTTPSフロントエンドの場合、NGINXでSSL/TLSの「終了」をオフにするときに、IS4にHTTPを必要としません。セキュリティに影響を与えずに不要な複雑さとパフォーマンスの低下を避けるために、バックエンド用のSSLオフロードを行うことはよく知られています。 MS Azureは、同様のアーキテクトの概念を適用します。詳細はこちら:https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction?tabs=aspnetcore2x#why-use-a-reverse-proxy-server –