16

असल में मेरा परिदृश्य यह है कि मेरे पास एक आंतरिक वेबसाइट है जिसके लिए एक सिंगल हार्ड-कोडेड उपयोगकर्ता नाम और पासवर्ड एक्सेस करने की आवश्यकता है (और यह नहीं हो सकता बंद कर दिया, केवल बदल गया)। मैं इस वेबसाइट को विभिन्न कारणों से एक रिवर्स प्रॉक्सी के माध्यम से उजागर कर रहा हूं (बंदरगाह को छिपा रहा हूं, यूआरएल को सरल बनाना, एनएटी को सरल बनाना आदि)।Apache2 रिवर्स प्रॉक्सी को एंड-पॉइंट पर रिवर्स करें जिसके लिए BasicAuth की आवश्यकता है, लेकिन इसे उपयोगकर्ता से छिपाना चाहते हैं

हालांकि, मैं करना चाहते हैं क्या अपाचे उपयोग करने के लिए प्रमाणीकरण को संभालने के लिए इतना है कि सक्षम हो रहा है:

  1. मेरे पास नहीं है हर किसी के लिए एकल पासवर्ड देने की
  2. मैं एकाधिक उपयोगकर्ता नाम और अपाचे के BasicAuth
  3. का उपयोग कर आंतरिक उपयोगकर्ताओं के लिए पासवर्ड हो सकता है, मेरे पास पासवर्ड
के लिए संकेत की जरूरत नहीं है

संपादित करें: अमीर प्रमाणीकरण के बारे में दूसरा हिस्सा new question

यहाँ ले जाया गया है है और अधिक या कम है कि मैं क्या अब है:

<VirtualHost *:80> 
    ServerName sub.domain.com 

    ProxyPass  /http://192.168.1.253:8080/endpoint 
    ProxyPassReverse/http://192.168.1.253:8080/endpoint 

    # The endpoint has a mandatory password that I want to avoid requiring users to type 
    # I.e. something like this would be nice (but does not work) 

    # ProxyPass  /http://username:[email protected]:8080/endpoint 
    # ProxyPassReverse/http://username:[email protected]:8080/endpoint 

    # Also need to be able to require a password to access proxy for people outside local subnet 
    # However these passwords will be controlled by Apache using BasicAuth, not the ProxyPass endpoint 

    # Ideas? 
</VirtualHost> 

उत्तर

20

जोड़ें या करने के बारे में किसी भी अनुरोध पार करने से पहले प्राधिकरण हैडर के ऊपर लिख अंत बिंदु। प्रमाणीकरण हेडर को हार्ड कोड किया जा सकता है, यह केवल "उपयोगकर्ता नाम: पासवर्ड" (उद्धरण के बिना) स्ट्रिंग का बेस -64 एन्कोडिंग है।

यदि पहले से नहीं किया गया है तो mod_headers मॉड्यूल को सक्षम करें।

RequestHeader set Authorization "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" 

यह सशर्त रूप से करने के लिए, mod_setenvif, उदा। अभी भी स्थानीय अनुरोधों के मामले में मास्टर पासवर्ड के लिए पूछना:

SetEnvIf Remote_Addr "127\.0\.0\.1" localrequest 
RequestHeader set Authorization "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" env=!localrequest 

उदाहरण

# ALL remote users ALWAYS authenticate against reverse proxy's 
# /www/conf/passwords database 
# 
<Directory /var/web/pages/secure> 
    AuthBasicProvider /www/conf/passwords 
    AuthType Basic 
    AuthName "Protected Area" 
    Require valid-user 
</Directory> 

# reverse proxy authenticates against master server as: 
# Aladdin:open sesame (Base64 encoded) 
# 
RequestHeader set Authorization "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" 
+0

यह आशाजनक लग रहा है लेकिन अगर मैं गैर-स्थानीय अनुरोध नहीं करता हूं तो मैं मास्टर पासवर्ड मांगना नहीं चाहता हूं, मैं मूल एथ पासवुड सूची बनाए रखने के लिए अपाचे चाहता हूं और उपयोगकर्ताओं को कई अलग-अलग पासवर्डों में से एक के साथ एथ को अनुमति देता हूं जो एंडपॉइंट होगा कभी न देखें। यह afaik सही नहीं करता है? –

+0

बस पहले (बिना शर्त, यानी SetEnvIf और 'localrequest') संस्करण का उपयोग करें, यानी 'RequestHeader सेट प्रमाणीकरण "मूल QWxhZGRpbjpvcGVuIHNlc2FtZQ =="'।रिवर्स प्रॉक्सी हमेशा मास्टर पासवर्ड के साथ प्रमाणित होगा, और उपयोगकर्ता आरपी से कनेक्ट करने के लिए हमेशा अन्य पासवर्ड का उपयोग करेंगे। – vladr

+0

मैंने SetEnvIf का उपयोग करके अपने मूल सुझाव दोनों की कोशिश की और BasicAuth काम करने की कोशिश की और मुझे कोई सफलता नहीं मिली। मैं प्रॉक्सी के माध्यम से पासवर्ड को सफलतापूर्वक अक्षम कर सकता हूं, लेकिन सशर्त रूप से अनुरोध के प्रकार के आधार पर नहीं। –

3

वैसे मैंने अपाचे प्रॉक्सीपास का उपयोग करके दो आईपी कैमरों को इंगित करने के लिए आपका उदाहरण इस्तेमाल किया। जब मैं वाक्य रचना उपयोगकर्ता प्रयोग किया है: [email protected] और एक iPhone के माध्यम से पहुँचा मैं सफारी (iphone नाविक) से एक सुरक्षा संदेश मिला तो मैं के साथ अच्छी तरह से काम करने के लिए उदाहरण बदल गया है और iPhone 4S

<Location /camarafeliz1/ > 
     # usuario admin password 123456 
     ProxyPass   http://192.168.0.39/ 
     ProxyPassReverse http://192.168.0.39/ 
     RequestHeader set Authorization "Basic YWRtaW46MTIzNDU2==" 
</Location> 
<Location /camarafeliz3/ > 
     # usuario admin password 123456 
     ProxyPass   http://192.168.0.99/ 
     ProxyPassReverse http://192.168.0.99/ 
     RequestHeader set Authorization "Basic YWRtaW46MTIzNDU2==" 
</Location> 

और आईफोन 4 एस ने लिंक में उपयोगकर्ता और पासवर्ड की वजह से सुरक्षा के बारे में शिकायत करना बंद कर दिया।

संबंधित मुद्दे