मैं एक प्रॉक्सी के पीछे एक डोकर कंटेनर में काम कर एक शिबोलेथ स्थापित करने की कोशिश कर रहा हूँ।

वर्तमान में मैं शिबोलेथ आईडीपी पृष्ठ पर पुनर्निर्देशित करने में सक्षम हूं जहां मैं अपना लॉगिन विवरण दर्ज कर सकता हूं और शिबोलेथ मुझे प्रमाणित करेगा। यह 404 के साथ विफल हो रहा है जब यह वापस रीडायरेक्ट करने का प्रयास करता है: https://my- service.org/Shibboleth.sso/SAML2/POST

मैं यह नहीं बता सकता कि यह एक अपाचे समस्या है या शिबोलेथ कॉन्फ़िगरेशन के साथ कुछ है।

अपाचे और डॉकटर के साथ एक सर्वर चल रहा है। यहां अपाचे उसी सर्वर पर चलने वाले डॉकटर कंटेनरों के लिए ट्रैफ़िक को प्रॉक्सी कर रहा है। मेरे पास डीएनएस प्रॉक्सी के लिए एक डोमेन नाम इंगित करता है। आइए इसे "my-service.org" कहते हैं। my-service.org के लिए अपाचे प्रॉक्सी कॉन्फ़िगरेशन इस प्रकार है:

<IfModule mod_ssl.c>
    <VirtualHost *:80>
        ServerName my-service.org
        ServerAdmin devs@blah.org
        DocumentRoot /var/www/html/my-service

        Redirect permanent / https://my-service.org/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    <VirtualHost _default_:443>
        ServerName my-service.org
        ServerAdmin devs@blah.org
        DocumentRoot /var/www/html/my-service

        ErrorLog ${APACHE_LOG_DIR}/docker-dev/my-service.log
        CustomLog ${APACHE_LOG_DIR}/docker-dev/my-service_ssl_access.log combined

        SSLEngine on
        SSLCertificateFile  /etc/ssl/certs/blah.crt
        SSLCertificateKeyFile  /etc/ssl/private/blah.key
        SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
        SSLProtocol All -SSLv2 -SSLv3
        SSLCompression off
        SSLHonorCipherOrder on

        ProxyPreserveHost On
        RequestHeader set X-Forwarded-Proto expr=%{REQUEST_SCHEME}
        RequestHeader set X-Forwarded-SSL expr=%{HTTPS}
        ProxyPass / http://127.0.0.1:8088/
        ProxyPassReverse / http://127.0.0.1:8088/       
    </VirtualHost>
</IfModule>

'माई-सर्विस' कंटेनर 'php:7-apache-buster' कंटेनर पर आधारित है और शिबड के साथ अपाचे चला रहा है। यह डॉकटर-कंपोज़ स्टैक का हिस्सा है। कंटेनर का अपाचे विन्यास है:

<VirtualHost *:80>
  ServerAdmin me@blah.org
  DocumentRoot /var/www/html/my-service

  <Directory /var/www/html/my-service/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride All
      Order deny,allow
      Allow from all
  </Directory>

  <Location "/shibboleth_login.php">
    AuthType shibboleth
    ShibRequestSetting requireSession 1
    ShibUseHeaders On
    require valid-user
  </Location>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

जैसा कि मैंने कहा कि शिबोलेथ आईडीपी से एसपी तक पुनर्निर्देशन के बिंदु तक सब कुछ काम कर रहा है, जहां यह 404 है। लॉग मुझे ज्यादा नहीं बता रहे हैं लेकिन जब मैं कंटेनर अपाचे कॉन्फ़िगरेशन लोड करता हूं तो एक त्रुटि लॉग होता है:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.6. Set the 'ServerName' directive globally to suppress this message

मुझे यकीन नहीं है कि इससे स्थिति पर कोई असर पड़ेगा।

एक बात जो मैंने सोचा था कि इसका असर हो सकता है, यह तथ्य है कि मेरे पास एसएसएल को संभालने के लिए शिबोलेथ सेट है:

<Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
                  checkAddress="false" handlerSSL="true" cookieProps="https">

लेकिन मेरा कंटेनर अपाचे कॉन्फ़िगरेशन केवल एक HTTP वर्चुअल होस्ट ब्लॉक को परिभाषित करता है। जैसा कि आप देख सकते हैं कि प्रॉक्सी प्रोटोकॉल को X-Forwarded-Proto और X-Forwarded-SSL हेडर के माध्यम से कंटेनर में भेजता है। मुझे 'माई-सर्विस' PHP ऐप के लिए उनकी ज़रूरत थी, लेकिन यह सुनिश्चित नहीं है कि उनका शिबोलेथ पर असर पड़ता है या नहीं। आईडीपी के साथ प्रारंभिक बातचीत ठीक काम करती है, यह सिर्फ पुनर्निर्देशन है जो काम नहीं करता है।

1
ThriceGood 21 अप्रैल 2020, 09:17

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगा कि मुझे एक ServerName विशेषता जोड़ने की आवश्यकता है:

<VirtualHost *:80>
  ServerAdmin me@blah.org
  DocumentRoot /var/www/html/my-service

  ServerName https://my-service.org:443
  UseCanonicalName On

  <Directory /var/www/html/my-service/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride All
      Order deny,allow
      Allow from all
  </Directory>

  <Location "/shibboleth_login.php">
    AuthType shibboleth
    ShibRequestSetting requireSession 1
    ShibUseHeaders On
    require valid-user
  </Location>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
0
ThriceGood 21 अप्रैल 2020, 13:25