Khi thiết lập được mô tả bên dưới, Có vẻ như apache không thể chuyển tiếp các tiêu đề bắt buộc tới nginx hoặc nginx trong khi chuyển tiếp yêu cầu ban đầu không chuyển tiếp URL đầy đủ mà chỉ là đường dẫn tương đối.
Ý tưởng ở đây là đảm bảo yêu cầu đối với ứng dụng được lưu trữ trên nginx được xác thực bởi Azure ADFS. để điều này hoạt động, apache đang đóng vai trò proxy cho mọi yêu cầu xác thực. Apache đang sử dụng mod_auth_openidc và chuyển tiếp yêu cầu chưa được xác thực tới Azure ADFS Xem bên dưới:
Nginx -> Apache:6000-> Azure ADFS -> Apache:6000 -> Nginx
Mặc dù người dùng được Azure ADFS xác thực chính xác, được chuyển hướng trở lại Nginx:80 nhưng trình duyệt (do ứng dụng) hiển thị lỗi lạ "Không tìm thấy tiêu đề trống (se_custid/ein) trong yêu cầu tiếp tục"
Hai lỗi nữa trong nhật ký apache là:
[auth_openidc:error] [pid 26485] [máy khách SERVERIP:35888] oidc_clean_expired_state_cookies: trạng thái đã hết hạn
Không có lỗi cụ thể đăng nhập nginx.
Vì vậy, câu hỏi ở đây là làm thế nào để chuyển tiếp các tiêu đề chính xác từ apache sang nginx để người dùng sau khi xác thực có thể sử dụng ứng dụng một cách chính xác hoặc cấu hình bên dưới có đủ hoặc cần nhiều cài đặt hơn không?
phần cấu hình apache
<Location /ourapp>
AuthType openid-connect
Require valid-user
</Location>
LoadModule auth_openidc_module modules/mod_auth_openidc.so
OIDCProviderMetadataURL https://login.microsoftonline.com/XXXX_XXX-xxx-XXXXXX/v2.0/.well-known/openid-configuration
OIDCClientID XXXXXXXXXXXXXXX
OIDCClientSecret XXXXXXXXXX
OIDCRedirectURI https://forever-authcheck.tire1network.com:6000/ourapp
OIDCCryptoPassphrase XXXXXXXXXXXX
OIDCScope "openid email profile"
#OIDCRemoteUserClaim email
OIDCProviderAuthorizationEndpoint https://login.microsoftonline.com/XXXX_XXX-xxx-XXXXXX/oauth2/v2.0/authorize
OIDCProviderTokenEndpoint https://login.microsoftonline.com/XXXX_XXX-xxx-XXXXXX/oauth2/v2.0/token
#OIDCPKCEMethod S256
OIDCPassIDTokenAs claims
OIDCCookiePath /
OIDCCookieDomain forever-authcheck.tire1network.com
OIDCCookie APP-OIDC-SESSION
OIDCCookieHTTPOnly On
OIDCSessionInactivityTimeout 600
OIDCSessionMaxDuration 36006
<VirtualHost *:6000>
ProxyPreserveHost On
ErrorLog /var/log/httpd/voidcerror.log
LogLevel debug
ServerName forever-authcheck.tire1network.com
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
ProxyPreserveHost On
Header set ein %{OIDC_CLAIM_EIN}e
ProxyPass /ourapp/ forever-authcheck.tire1network.com/in/
ProxyPassReverse /ourapp/ forever-authcheck.tire1network.com/in/
ProxyPreserveHost On
ServerName forever-authcheck.tire1network.com
SSLEngine on
SSLCertificateFile "/etc/pki/outcert/Certificate.pem"
SSLCertificateKeyFile "/etc/pki/outcert/CertificateKey.pem"
SSLCertificateChainFile "/etc/pki/outcert/CertificateChain.p12"
</VirtualHost>
phần cấu hình nginx
nginx:80
vị trí /ourapp/ {
proxy_ssl_server_name bật;
proxy_pass https://forever-authcheck.tire1network.com:6000;
hành trình proxy_set_header "trực tiếp";
proxy_set_header Máy chủ lưu trữ $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_redirect mặc định;
proxy_ssl_certificate /etc/pki/outcert/Certificate.pem;
proxy_ssl_certificate_key /etc/pki/outcert/CertificateKey.pem;
tắt proxy_ssl_verify;
}