2012-08-22 15 views
7

हाय मैंने Glassfish 3.1.2's JDBCRealm has a new Password Encryption Algorithm field. What is it for? पढ़ा है और इसी तरह के विषयों के लिए googled है लेकिन ऐसा लगता है कि कोई निश्चित उत्तर प्रकाशित नहीं किया गया है।ग्लासफ़िश 3.1.2 जेडीबीसी रीम कॉन्फ़िगरेशन

संक्षेप में, मेरे पास एक jdbc क्षेत्र है जो ग्लासफ़िश 3 में काम कर रहा है, जब मैं 3.1.2 पर अपग्रेड करता हूं, वही कॉन्फ़िगरेशन काम नहीं करता है। पिछले धागे के मुताबिक, मैंने जासकॉन्टेक्स्ट को jdbcDigestRealm (jdbcRealm के अलावा जो काम नहीं करता है) सेट किया है, डाइजेस्ट एल्गोरिदम को MD5 पर सेट किया है (मैंने v5 में MD5 का उपयोग किया था और यह काम किया था)। पासवर्ड एन्क्रिप्शन एल्गोरिदम के लिए मैंने 'रिक्त' और 'हेक्स' की कोशिश की, दोनों काम नहीं करते हैं।

क्या कोई मुझे बता सकता है कि मुझे कैसे कॉन्फ़िगर करना चाहिए। मेरी क्रेडेंशियल टेबल http://jugojava.blogspot.hk/2011/02/jdbc-security-realm-with-glassfish-and.html के अनुसार MD5 हैश किए गए पासवर्ड के साथ mysql पर आधारित है।

उत्तर

14

मैं इसे निम्नलिखित सेटिंग्स के साथ काम करने में सफल रहा हूं। मैं अपनी वर्तमान (गलत) समझ के साथ कुछ टिप्पणियां जोड़ता हूं।

  • JAASContext = "jdbcRealm" => मूल्य फ़ाइल 'glassfish3/glassfish/डोमेन/डोमेन 1/config/login.conf' के अनुसार निर्धारित किया जाना चाहिए। डिफ़ॉल्ट रूप से, वर्ग 'com.sun.enterprise.security.auth.login.JDBCLoginModule' (जो जेडीबीसीआरएलएम लागू करती है) को "jdbcRealm" के अंतर्गत कॉन्फ़िगर किया गया है। "JdbcDigestRealm" के तहत कॉन्फ़िगर किया गया एक और लॉगिन मॉड्यूल है। यह वर्तमान विषय का हिस्सा नहीं है।
  • JNDI = "..." => मैंने वहां डेटासेट का नाम रखा है जो पहले से ही मेरे एप्लिकेशन के डेटाबेस के लिए मौजूद है।
  • उपयोगकर्ताटेबल = "MY_SCHEMA.usertable" => डेटाबेस तालिका का 'पूर्ण योग्य नाम'।
  • UserNameColumn = "उपयोगकर्ता id" => स्तंभ नाम जहां उपयोगकर्ता नाम की दुकान
  • PasswordColumn = "पासवर्ड" => स्तंभ नाम जहां (हैश के ) उपयोगकर्ता passsword की दुकान।
  • ग्रुपटेबल = "MY_SCHEMA.grouptable" => डेटाबेस तालिका का 'पूर्ण योग्य नाम'।
  • GroupTableUserNameColumn = "" => इस के उपयोग के बारे कोई सुराग नहीं ...
  • GroupNameColumn = "ग्रुप" => स्तंभ नाम जहां उपयोगकर्ता नाम की दुकान
  • AssignGroups = "" => जहां तक मैं जीएफ कोड को समझता हूं, यह क्षेत्र में पंजीकृत प्रत्येक उपयोगकर्ता को समूहों की सूची सौंपने का एक तरीका है। यह एक तरह का हार्ड कोडिंग है। ग्लासफ़िश (कैन) पर उपलब्ध हर क्षेत्र में कम या ज्यादा इस संपत्ति का उपयोग कर सकते हैं।
  • डेटाबेस यूज़र = "" => जैसा कि मैंने समझा, आपको इसकी आवश्यकता है यदि आप JNDI (दूसरा पैरामीटर) का उपयोग कर नहीं हैं।
  • डाटाबेसपासवर्ड = "" => जैसा कि मैंने समझा, आपको JNDI (दूसरा पैरामीटर) का उपयोग करके नहीं है।
  • डाइजेस्ट एल्गोरिदम = "SHA-256" => 'MD5', 'SHA-1' या 'SHA-256'।'SHA-256' डिफ़ॉल्ट है। आइए 'SHA-256' लें।
  • पासवर्ड एन्क्रिप्शन एल्गोरिदम = "एईएस" => पासवर्ड संग्रहीत करने से पहले पाचन एल्गोरिदम पासवर्ड पर लागू होता है। नया पासवर्ड एन्क्रिप्शन सुरक्षा की एक अतिरिक्त परत है जो एन्क्रिप्टेड होने के लिए "हैश" (पासवर्ड पर डीए लागू होने के बाद स्ट्रिंग) की अनुमति देता है। इस तरह, यदि कोई हमलावर डेटाबेस से पासवर्ड पुनर्प्राप्त करता है तो वे एन्क्रिप्ट और धोए जाते हैं। यह बेहद असंभव है कि ऐसा डेटा हमलावर के लिए उपयोगी होगा।
  • एन्कोडिंग = "हेक्स" => आपके पास 'हेक्स' या 'बेस 64' के बीच विकल्प है। हेक्स मेरे लिए सुविधाजनक था।
  • चार्ससेट = "" => जैसा कि मेरे डेटाबेस में 'विदेशी' अक्षर नहीं है, मैं नहीं सोचता कि मुझे वहां कुछ स्मार्ट सेट करने की आवश्यकता है। मैं इसे खाली छोड़ देता हूं और यह काम करता है।

आशा है कि इससे मदद मिलेगी।

पीएस: अगर किसी के पास REAL दस्तावेज (आधिकारिक नहीं है जो इस पल में पूरी तरह से बेकार है) का लिंक है, तो कृपया यहां एक लिंक डालें।

+0

पर अपलोड किया गया है क्या किसी ने इसे आजमाया है? मैं पीछा करता हूं और सफल नहीं था – cpliu338

+0

विंडोज़ मशीन पर ग्लासफ़िश 3.1.2 के साथ यह ठीक है। कल रात मैंने घर पर एक और पीसी का उपयोग करने की कोशिश की जो फेडोरा लिनक्स पर ग्लासफ़िश 3.1 है। V 3.1 में कोई "पासवर्ड एन्क्रिप्शन एल्गोरिदम" फ़ील्ड नहीं है। मुझे बाद में v 3.1 के लिए फिर से जांच करने की आवश्यकता है। – cpliu338

+0

यह "पासवर्ड एन्क्रिप्शन एल्गोरिदम" फ़ील्ड बहुत नया है। 3.1.1 या 3.1.2 से शुरू हो रहा है ... ;-) – Algiz

0

पहली चीजें पहले। आपका लॉग आउटपुट क्या है? आपकी "कामकाजी समस्या नहीं" के लक्षण क्या हैं? क्या मूल-प्रमाणीकरण पॉप-अप विंडो हुई थी? क्या आपको

No login module configured for jdbcDigestRealm 

या अन्य त्रुटि संदेश प्राप्त हुआ?

असफल लॉगिन प्रयास से कोई लॉग आउटपुट नहीं होने पर सुरक्षा लॉग स्तर बदलें।

+0

एक लॉगिन विंडो प्रकट होता है, मैं साख है, जो Glassfish v3 के साथ काम किया में टाइप करें, और यह मिल गया: चेतावनी: WEB9102: वेब लॉगिन विफल: कॉम .sun.enterprise.security.auth.login.common.LoginException: लॉगइन असफल: java.lang.NullPointerException \t com.sun.enterprise.security.auth.login.DigestLoginModule.login पर (DigestLoginModule.java:107) \t sun.reflect.NativeMethodAccessorImpl.invoke0 (मूल विधि) \t sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorI पर) mpl.java:39) ... – cpliu338

+0

क्या आपके पास अपनी lib निर्देशिका में आपकी जेडीबीसी कनेक्टर लाइब्रेरी मौजूद है? ऐसा लगता है कि आप इसे कॉपी करना भूल गए हैं। बेहतरीन के लिए सुरक्षा लॉग स्तर सेट करें। – Erwin

+0

mysql-connector-java-5.1.6-bin.jar [installbase]/glassfish/lib में है। मैं कनेक्शन पूल पिंग कर सकता हूं, और मैं जेडीबीसी का उपयोग कर अपने प्रोग्राम के भीतर डेटाबेस से डेटा पुनर्प्राप्त कर सकता हूं। सुरक्षा लॉग स्तर को बेहतरीन कैसे सेट करें? – cpliu338

0

मेरे पास jdbcRealm समस्या में दो भिन्नताएं हैं I पहला जीएफ 3.1.1 का उपयोग करके बनाए गए डोमेन से अस्तित्व में था जो जीएफ सर्वर को 3.1.2.2 रिलीज में अपडेट करने के बाद काम करना जारी रखता था। मैंने फिर इस सर्वर पर एक नया डोमेन बनाया। नया डोमेन jdbcRealm का उपयोग करके कॉन्फ़िगर किया गया था। "पैरामीटर एन्क्रिप्शन एल्गोरिदम" को छोड़कर 3.1.1 कॉन्फ़िगरेशन स्क्रीन के अंतर्गत मौजूद नहीं थे, जो सभी पैरामीटर 3.1.1 कॉन्फ़िगरेशन के लिए समान थे। जब मैंने अपने वेब एप्लिकेशन का उपयोग करके लॉगिन करने का प्रयास किया तो मुझे लगातार लॉग फ़ाइल में "jdbcrealm.invaliduserreason [#]" त्रुटि मिल रही थी।

एकमात्र तरीका जिसे मैं हल करने में सक्षम था और सफलतापूर्वक लॉगिन करने में सक्षम था, एईएस को "पासवर्ड एन्क्रिप्शन एल्गोरिदम" फ़ील्ड में जोड़कर था। मैंने परिवर्तन को सहेजा और सर्वर को पुनरारंभ किया और एक बार फिर मैं jdbcRealm कनेक्शन से उपयोगकर्ताओं को सफलतापूर्वक प्रमाणीकृत करने में सक्षम हूं।

1

मैंने आज कुछ समय बिताया (जावा ईई 7, ग्लासफिश 4 ​​उबंटू 12.04 पर)। जैसा कि यह पता चला है, दायरे के अधिकांश क्षेत्रों की आवश्यकता नहीं है। निम्नलिखित फ़ील्ड केवल एक ही थे जिन्हें डेटाबेस के लिए एक सफल कनेक्शन स्थापित करने की आवश्यकता है।

  • दायरे का नाम - कोई भी नाम, जब तक आप वेब में एक ही नाम का उपयोग करते हैं।एक्सएमएल

  • JAAS प्रसंग - कोई नाम

  • JNDI - कोई नाम (मैं JDBC इस्तेमाल किया/DB नाम)

  • उपयोगकर्ता टेबल - टेबल सभी उपयोगकर्ताओं

  • उपयोगकर्ता नाम स्तंभ में रखे जो - उपयोगकर्ता तालिका में कॉलम जिसमें आपके उपयोगकर्ता नाम

  • पासवर्ड - कॉलम जिसमें हैश पासवर्ड हैं (SHA 256)

  • समूह तालिका - टेबल जो समूहों

  • समूह का नाम स्तंभ शामिल हैं - समूह तालिका में कॉलम जो समूह के नाम

मैं सब कुछ खाली छोड़ दिया होते हैं। मेरे डेटाबेस पासवर्ड कॉलम में SHA 256 का उपयोग करके पासवर्ड धोया गया था।

मैंने 'पासवर्ड एन्क्रिप्शन' फ़ील्ड में यादृच्छिक पाठ भरकर और इसे सहेजकर इसका परीक्षण किया। मेरे आवेदन को दोबारा तैनात किया और ग्लासफ़िश 4 को पुनरारंभ किया। फिर भी काम किया। इसका मतलब है कि क्षेत्र, जबकि अभी भी मौजूद है अब और नहीं पढ़ा जा रहा है।

पीएस - पहले उत्तर में वर्णित वास्तविक दस्तावेज अभी भी काफी खराब है।

0

यहाँ कुछ हद तक एक अधिक विस्तृत गाइड नहीं है ->http://is.gd/Jx6Gnp

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