編輯:更詳細的解釋安裝的Identity Server 4反向代理
我們有以下設置:
NGINX反向代理設置做SSL卸載。所有內部的 通信都通過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有app.UseIdentityServer
var fordwardedHeaderOptions = new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }; fordwardedHeaderOptions.KnownNetworks.Clear(); fordwardedHeaderOptions.KnownProxies.Clear(); app.UseForwardedHeaders(fordwardedHeaderOptions);
在客戶端RequireHttpsMetadata之前,下面的設置被設置爲FALSE
在IS4端,所有客戶端都被配置爲具有HTTPS地址以用於「重定向Uris「和」PostLogoutRedirectUris「。
在客戶端IdentityServerAuthenticationOptions配置是這樣的:
new IdentityServerAuthenticationOptions { Authority = "https://[OAUTH_ADDRESS]", ApiName = "[API_NAME]", ApiSecret = "[API_SECRET]", RequireHttpsMetadata = false }
實際發生的是,當我們試圖訪問我們的註冊IS4的客戶之一,並請求被重定向到IS4身份驗證我們有「未經授權的客戶端」消息屏幕。此外,在檢查重定向請求的查詢字符串之後,我們可以看到返回URL是HTTP而不是HTTPS。
請指教。
當IS4運行HTTPS前端(如NGINX)時,不需要HTTP,讓NGINX執行SSL/TLS卸載「終止」。其衆所周知的做法是爲後端執行ssl卸載,以避免不必要的複雜性和性能降低,而不會產生安全影響。 MS Azure應用類似的架構師概念。更多在這裏:https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction?tabs=aspnetcore2x#why-use-a-reverse-proxy-server –