Score:0

ปัญหาแปลก ๆ กับการส่งต่อส่วนหัวการรับรองความถูกต้องจาก apache ไปยัง nginx - ไม่พบส่วนหัวที่ว่างเปล่า (se_custid / ein) ในคำขอเพื่อดำเนินการต่อ

ธง ng

ในคำอธิบายการตั้งค่าด้านล่าง ดูเหมือนว่า apache ไม่สามารถส่งต่อส่วนหัวที่จำเป็นไปยัง nginx หรือ nginx ในขณะที่การส่งต่อคำขอเริ่มต้นไม่ได้ส่งต่อ URL แบบเต็ม แต่เป็นเพียงเส้นทางที่เกี่ยวข้อง

แนวคิดนี้คือเพื่อให้แน่ใจว่าคำขอไปยังแอปพลิเคชันที่โฮสต์บน nginx นั้นได้รับการรับรองความถูกต้องโดย Azure ADFS เพื่อให้ทำงานได้ apache กำลังเล่นบทบาทของพร็อกซีสำหรับคำขอตรวจสอบสิทธิ์ใด ๆ Apache ใช้ mod_auth_openidc และส่งต่อคำขอที่ไม่ผ่านการรับรองความถูกต้องไปยัง Azure ADFS ดูด้านล่าง:

Nginx -> Apache:6000-> Azure ADFS -> Apache:6000 -> Nginx

ในขณะที่ผู้ใช้ได้รับการรับรองความถูกต้องอย่างถูกต้องโดย Azure ADFS จะถูกเปลี่ยนเส้นทางกลับไปที่ Nginx:80 แต่เบราว์เซอร์ (เนื่องจากแอป) แสดงข้อผิดพลาดแปลก ๆ "ไม่พบส่วนหัวที่ว่างเปล่า (se_custid/ein) ในคำขอเพื่อดำเนินการต่อ"

ข้อผิดพลาดอีกสองข้อในบันทึก apache คือ:

[auth_openidc:error] [pid 26485] [client SERVERIP:35888] oidc_clean_expired_state_cookies: สถานะหมดอายุแล้ว

ไม่มีข้อผิดพลาดเฉพาะที่บันทึกไว้ใน nginx

ดังนั้นคำถามที่นี่คือวิธีการส่งต่อส่วนหัวที่ถูกต้องจาก apache ไปยัง nginx เพื่อให้ผู้ใช้ที่ผ่านการรับรองความถูกต้องสามารถใช้แอปได้อย่างถูกต้องหรือมีการกำหนดค่าด้านล่างเพียงพอหรือต้องการการตั้งค่าเพิ่มเติมหรือไม่

ส่วนกำหนดค่า 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>



ส่วนกำหนดค่า nginx

nginx:80


ตำแหน่ง /แอปของเรา/ {
  เปิด proxy_ssl_server_name;
  proxy_pass https://forever-authcheck.tire1network.com:6000;
  proxy_set_header se-journey "โดยตรง";
  proxy_set_header โฮสต์ $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-ส่งต่อ-สำหรับ $remote_addr;
  proxy_set_header X-ส่งต่อโฮสต์ $remote_addr;
  proxy_redirect เริ่มต้น;
  

  proxy_ssl_certificate /etc/pki/outcert/Certificate.pem;
  proxy_ssl_certificate_key /etc/pki/outcert/CertificateKey.pem;
  ปิด proxy_ssl_verify;
}









Score:0
ธง ng

เอาล่ะ ทำความเข้าใจเล็กน้อย ใช้การตั้งค่าชั่วคราวอื่นเพื่อทำความเข้าใจการขุดบันทึกเพิ่มเติม

นี่คือความเข้าใจคำขอของผู้ใช้ในปัจจุบัน -> Nginx:443/ourapp -> Apache:6000-> Azure ADFS -> Azure ส่งคืน URL ไปยังเบราว์เซอร์ -> เบราว์เซอร์ขอ URL ที่ส่งคืน

เมื่อดูบันทึกอย่างใกล้ชิด เห็นได้ชัดว่าเกิดอะไรขึ้น มากกว่านี้ช่วยให้มันเข้าใจ มากกว่า

หลังจากปรับแต่ง ngnix เพื่อส่งส่วนหัวที่ถูกต้องด้วยพอร์ตและโฮสต์ที่ถูกต้อง

proxy_set_header X-Forwarded-Port "443";

proxy_set_header X-Forwarded-Host "forever-authcheck.tire1network.com";

ซึ่งส่งผลให้มีการตั้งค่าคุกกี้ที่ถูกต้องสำหรับ original_url โดย apache และ mod_auth_openidc

ขณะนี้การเปลี่ยนเส้นทางทำงานอย่างถูกต้อง การอ้างสิทธิ์กำลังไปถึง NGINX และแอปของเรา

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา