2010-11-24 7 views
5

मैं एक सार्वजनिक डोमेन पर कुछ सहयोगियों के लिए एक grails ऐप दिखा रहा हूँ। अब तक मैं डेवेल मोड में काम कर रहा हूं और युद्ध के माध्यम से तैनात नहीं हुआ हूं।पासवर्ड की तरह एकल htpasswd के साथ डेवेल grails आवेदन सुरक्षित

मुझे इसे जांचने/इसे खेलने से रोकने के लिए एप्लिकेशन को सुरक्षित करने की आवश्यकता है। मेरे पास पहले से ही एक उपयोगकर्ता mgmt है, लेकिन एसबी कुछ भी देखने से पहले मैं चाहता हूं। Htpasswd- जैसी सुरक्षा। यदि संभव हो, तो मैं एप्लिकेशन को प्लगइन (उदा।, शिरो) के साथ विस्तारित नहीं करना चाहता हूं।

कोई विचार/सुझाव?

बहुत बहुत धन्यवाद! अपने Grails परियोजना जड़ में

<role rolename="role1"/> 
<user username="user1" password="password1" roles="role1"/> 

, grails install-templates निष्पादित करें:

उत्तर

5

आप HTTP प्रमाणीकरण का उपयोग कर सकते हैं। HTTP प्रमाणीकरण लागू करने के लिए सरल सरल है, लेकिन यह बहुत सुरक्षित या प्रयोग योग्य नहीं है। असली समाधान के लिए आप शिरो या वसंत-सुरक्षा का उपयोग करना बेहतर कर रहे हैं। उस ने कहा, एक साधारण फ़िल्टर HTTP प्राधिकरण शीर्षलेख की जांच कर सकता है और यदि मौजूद नहीं है तो 401 स्थिति कोड लौटा सकता है। इससे ब्राउज़र को उपयोगकर्ता नाम/पासवर्ड बॉक्स पॉप अप करने के लिए मजबूर किया जाएगा, और हेडर में एन्कोड किए गए उपयोगकर्ता नाम और पासवर्ड के साथ फॉर्म पुनः सबमिट करें।

Grails फ़िल्टर में एक वर्ग का नाम होना चाहिए जो "फ़िल्टर" के साथ समाप्त होता है और grails-app/conf निर्देशिका में जाता है। यहाँ एक उदाहरण है:

class SimpleAuthFilters { 
    def USERNAME = "foo" 
    def PASSWORD = "bar" 

    static filters = { 
     httpAuth(uri:"/**") { 
      before = { 
       def authHeader = request.getHeader('Authorization') 
       if (authHeader) { 
        def usernamePassword = new String(authHeader.split(' ')[1].decodeBase64()) 
        if (usernamePassword == "$USERNAME:$PASSWORD") { 
         return true 
        } 
       } 
       response.setHeader('WWW-Authenticate', 'basic realm="myRealm"') 
       response.sendError(response.SC_UNAUTHORIZED) 
       return false 
      } 
     } 
    } 
} 
+0

धन्यवाद, यह वही था जो मैं ढूंढ रहा था। मुझे सुरक्षा के स्तर से अवगत है - और यकीन है कि यह लोगों को यूआरएल और परीक्षण को याद रखने से रोक देगा ... – fluxon

4

$ CATALINA_HOME/conf/बिल्ला-users.xml के लिए निम्न जोड़ें और बिलाव को पुनरारंभ करें। यह परियोजना में src/templates/war/web.xml रखेगा।
(मामले में फ़ाइल अपने आईडीई में दृश्यमान नहीं है, यह एक बग हो सकता है तो फिर फाइल सिस्टम में यह लगता है।।)

Add the followingweb.xml (web-app टैग के एक बच्चे के रूप) के लिए:

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name> 
     Entire Application 
    </web-resource-name> 
    <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>role1</role-name> 
    </auth-constraint> 
</security-constraint> 

<login-config> 
    <auth-method>BASIC</auth-method> 
    <realm-name>Restricted Area</realm-name> 
</login-config> 
+1

इस उत्तर मान्यताओं कि वह बिल्ला उपयोग कर रहा है बनाता है, और मैं महसूस कर रही है कि वह जब से वह एक युद्ध का उपयोग नहीं कर रहा है और चल रहा है 'grails देव बिल्ला के साथ चलने-app' बारे में कुछ भी उल्लेख नहीं किया गया है नहीं है मिलता है। हालांकि, मुझे यह जवाब स्वयं के लिए उपयोगी लगता है, और टोमकैट में युद्धों का उपयोग करते समय भी वही काम किया है, इसलिए +1। –

+0

बिल्कुल सही, रोब! समाधान की तरह, एक बार जब मैं "वास्तविक के लिए" ऐप सेट अप करता हूं तो स्विच हो सकता है। – fluxon

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