2011-07-18 10 views
17

मैं ग्लासफ़िश और जावा मॉड्यूल के साथ काम कर रहा हूं।ग्लासफ़िश 3.1 भूमिका मैपिंग के लिए डिफ़ॉल्ट प्रिंसिपल

मैंने इस तरह से अपना web.xml कॉन्फ़िगर किया।

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>ALL Page for admin</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>user</role-name> 
    </auth-constraint> 
</security-constraint> 
<login-config> 
    <auth-method>BASIC</auth-method> 
    <realm-name>file</realm-name> 
</login-config> 
<security-role> 
    <description>Administrator</description> 
    <role-name>user</role-name> 
</security-role> 

इसका मतलब है कि मेरे उपयोगकर्ता को एक्सेस करने के लिए सभी उपयोगकर्ता समूह उपयोगकर्ता की आवश्यकता है।

फिर glassfish कंसोल पर मैं में विकल्प टिकटिक करने की जरूरत है: -> सर्वर-config - विन्यास> सुरक्षा -> भूमिका का मिलान करने के लिए डिफ़ॉल्ट प्रधान

मेरा प्रश्न कारण है कि मैं करने के लिए इस डिफ़ॉल्ट प्रधान टिकटिक करने की जरूरत है रोल मैपिंग? और मैं इसे टिकने से बचने के लिए अपना web.xml कैसे बदल सकता हूं?

धन्यवाद एक बहुत

लोइक

उत्तर

37

जब आप भूमिकाओं और web.xml में भूमिका आप कथात्मक सुरक्षा है, जो अनिवार्य JAAS के उपयोग के प्रमाणीकरण और प्राधिकरण आवश्यकताओं एलान के तौर पर निर्दिष्ट लागू करने के लिए पर निर्भर करता है का उपयोग कर रहे निर्दिष्ट करें।

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

आमतौर पर web.xml में निर्दिष्ट घोषणात्मक भूमिकाओं और कंटेनर विशिष्ट परिनियोजन वर्णनकर्ताओं का उपयोग कर उपयोगकर्ता-पहचान डेटाबेस में प्रस्तुत प्रिंसिपल या समूह के बीच एक मानचित्रण किया जाता है। ग्लासफ़िश 3,1 में, यह glassfish-web.xml फ़ाइल होता है। इस तरह के प्रत्येक मैपिंग, या तो glassfish-web.xml (WAR फ़ाइल परिनियोजन के लिए) या glassfish-application.xml (ईएआर फ़ाइल तैनाती के लिए), या glassfish-ejb-jar.xml (के लिए) में निम्नलिखित तरीके से, किसी भी प्रमुख या जेएएएस क्षेत्र में एक समूह के लिए आवेदन में घोषणात्मक भूमिका का मानचित्रण करेगा। EJB जार फ़ाइल परिनियोजन):

glassfish-web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> 
<glassfish-web-app error-url=""> 
... 
    <security-role-mapping> 
     <role-name>user</role-name> 
     <principal-name>Root</principal-name> <!-- Map a principal to the role 'user' --> 
     <group-name>Administrators</group-name> <!-- Map a group to the role 'user' --> 
    </security-role-mapping> 
... 
</glassfish-web-app> 

glassfish-application.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-application PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Java EE Application 6.0//EN" "http://glassfish.org/dtds/glassfish-application_6_0-1.dtd"> 
<glassfish-application> 
... 
    <security-role-mapping> 
     <role-name>user</role-name> 
     <principal-name>Root</principal-name> <!-- Map a principal to the role 'user' --> 
     <group-name>Administrators</group-name> <!-- Map a group to the role 'user' --> 
    </security-role-mapping> 
... 
</glassfish-application> 

glassfish-EJB-jar.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-ejb-jar PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 EJB 3.1//EN" "http://glassfish.org/dtds/glassfish-ejb-jar_3_1-1.dtd"> 
<glassfish-ejb-jar> 
... 
    <security-role-mapping> 
     <role-name>user</role-name> 
     <principal-name>Root</principal-name> <!-- Map a principal to the role 'user' --> 
     <group-name>Administrators</group-name> <!-- Map a group to the role 'user' --> 
    </security-role-mapping> 
... 
</glassfish-ejb-jar> 

ऊपर वर्णनकर्ता नाम Root की अलग-अलग पहचान के साथ और दायरे में नाम Administrators के साथ एक उपयोगकर्ता समूह के लिए एक प्रधान को एक भूमिका user मैप करें। आप इनमें से किसी भी मैपिंग को छोड़ सकते हैं, और मुख्य मैपिंग, या समूह मैपिंग की भूमिका के लिए केवल एक भूमिका निभा सकते हैं। आपके पास एक ही भूमिका में मैप किए गए एकाधिक प्रधानाचार्य हो सकते हैं, या एक ही भूमिका में मैप किए गए कई समूह, या यहां तक ​​कि कई प्रधानाचार्यों और समूहों को एक ही भूमिका में मैप किया जा सकता है।

यह JAAS स्थानों में प्रधानाचार्यों और समूहों की अवधारणा को समझने के लिए महत्वपूर्ण है - एक प्रमुख एक विषय प्रणाली में (उपयोगकर्ता आवेदन में प्रवेश करने) की पहचान का प्रतिनिधित्व करता है, और यह एक व्यक्तिगत पहचान (एक ही उपयोगकर्ता हो सकता है) या एक समूह पहचान (एक उपयोगकर्ता समूह)। वास्तविक प्रधानाचार्यों या समूहों को घोषणात्मक भूमिकाओं का मानचित्रण करके, web.xml में किसी भी उपयोगकर्ता-पहचान डेटाबेस (यानी किसी भी क्षेत्र) के विरुद्ध निर्दिष्ट नियमों को लागू करने में सक्षम होगा, और कोडबेस में किसी भी बदलाव के बिना गतिशील रूप से ऐसा करने में सक्षम होंगे; आखिरकार, इस तरह के बदलाव के लिए प्रधानाचार्यों और समूहों के नए सेट में संभावित रूप से अलग-अलग क्षेत्र में घोषणात्मक भूमिकाओं को फिर से मैप करने की आवश्यकता होगी। आप जावा ईई सुरक्षा और जेएएएस the chapter on security in the Java EE 6 tutorial में एक साथ कैसे काम करते हैं, इस बारे में एक बुनियादी ट्यूटोरियल पा सकते हैं।

ग्लासफ़िश एक सरलीकृत मैपिंग योजना की अनुमति देता है, जहां कंटेनर-विशिष्ट परिनियोजन वर्णनकर्ता (इस मामले में ग्लासफ़िश-वेब.एक्सएमएल) में सभी घोषणात्मक भूमिकाओं के लिए मैपिंग करने के लिए आवश्यक नहीं है, जब तक कि के नाम घोषणात्मक भूमिका प्रिंसिपल या समूहों के नामों के समान होती है। भूमिका मैपिंग योजना के लिए यह डिफ़ॉल्ट प्रिंसिपल है। ऐसा लगता है कि आपके मामले में, आपके क्षेत्र में प्रधानाचार्य/समूह web.xml में निर्दिष्ट घोषणात्मक भूमिकाओं के समान हैं, और इसलिए आप प्रिंसिपल और समूहों को भूमिकाओं को स्पष्ट रूप से मैप करने से बचेंगे। सरल शब्दों में, यदि भूमिका user आपके जेएएएस दायरे (और इसी तरह अन्य पहचानों के लिए) में प्रिंसिपल user या उपयोगकर्ता समूह user जैसा ही है, तो आप ग्लासफ़िश की प्रिंसिपल मैपिंग स्कीम में डिफ़ॉल्ट भूमिका का उपयोग कर सकते हैं, प्रत्येक के लिए इसे मैप किए बिना आपकी web.xml फ़ाइल में भूमिका।

यदि आप भूमिका मैपिंग के लिए डिफ़ॉल्ट प्रिंसिपल के परिनियोजन विकल्प को टिकने से बचाना चाहते हैं, तो आपको कंटेनर विशिष्ट परिनियोजन वर्णनकर्ताओं में स्वयं को प्रमुख/समूह मैपिंग की भूमिका प्रदान करनी होगी, जैसा कि आप आमतौर पर अन्य एप्लिकेशन सर्वर के लिए करते हैं।

आप इस विषय के बारे में one of the posts on blogs.oracle.com that describes this feature of Glassfish में और अधिक पढ़ सकते हैं।

+0

आपके उत्तर के लिए धन्यवाद। असल में मैं क्या करना चाहता हूं वह एक समूह है जिसे उपयोगकर्ता कहा जाता है। और हर उपयोगकर्ता इस समूह का हिस्सा हैं। इसका मतलब है कि जिनके पास मेरे आवेदन से खाता है (यह एक युद्ध है) पासवर्ड और उपयोगकर्ता का उपयोग कर कनेक्ट कर सकते हैं। फिर मैं अपने आप से प्रबंधन करता हूं जो आवेदन में क्या पहुंच सकता है। – user789148

+0

यदि मैं कोड का उपयोग करता हूं तो आप मुझे ग्लासफ़िश-वेब.एक्सएमएल के लिए देते हैं। मेरे आवेदन में शामिल होने का प्रयास करते समय मुझे निम्न त्रुटि मिलती है। निर्दिष्ट संसाधन तक पहुंच (अनुरोधित संसाधन तक पहुंच अस्वीकार कर दी गई है) को प्रतिबंधित कर दिया गया है। यह मुझे लॉगिन स्क्रीन भी नहीं देता – user789148

+0

क्षमा करें। ठीक है अब मैं इसे प्राप्त करता हूँ। मुझे बस अपने उपयोगकर्ताओं से मैपिंग जोड़ने की ज़रूरत है और यह काम करता है :) बहुत कुछ धन्यवाद जो आप रॉक करते हैं – user789148

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