2010-08-09 24 views
10

के साथ लॉगिन कॉन्फ़िगर कैसे करें मैं अपने ग्लासफ़िश v3.0.1 b22 में सुरक्षा के लिए jdbcRealm का उपयोग करता हूं। यह स्थापित किया गया है ताकि यह इस ब्लॉग का पालन करके प्रमाणीकरण के लिए मेरे डेटाबेस के अंदर USER तालिका का उपयोग कर सके: http://blogs.oracle.com/foo/entry/mort_learns_jdbc_realm_authentication। अगर मैं डाइजेस्ट एल्गोरिदम को सादे पाठ के रूप में छोड़ देता हूं तो मुझे यह ठीक काम मिल गया। हालांकि जब मैं पाचन एल्गोरिदम के लिए SHA-256 का उपयोग करने का प्रयास करता हूं, तो यह काम करना बंद कर देता है। मैंने जो किया वह ग्लासफ़िश में निर्दिष्ट है - सुरक्षा - दायरे - jdbcRealm - मुझे पता है कि मैं SHA-256 चाहता हूं (मैं सिर्फ पाचन क्षेत्र के अंदर SHA-256 टाइप करता हूं)। तब मैं एक साधारण जावा प्रोग्राम SHA-256 हैश में पासवर्ड पाठ परिवर्तित करने के लिए लिखा था। मैं डेटाबेस में अपने पासवर्ड फ़ील्ड के अंदर उस हैश पेस्ट करता हूं। वैसे, पासवर्ड फ़ील्ड प्रकार वर्कर (30) है। मैं अब और लॉग इन नहीं कर सकता। एक बात मुझे पता है कि मेरे सरल जावा प्रोग्राम ने एक ही टेक्स्ट फ़ील्ड के लिए हर बार अलग हैश उत्पन्न किया था।ग्लासफ़िश सुरक्षा - jdbcRealm: SHA-256 डाइजेस्ट

 MessageDigest md = MessageDigest.getInstance("SHA-256"); 
     String text = "admin"; 
     md.update(text.getBytes("UTF-8")); 
     byte[] digest = md.digest(); 
     System.out.println(digest.toString()); 
+0

मैं 4.0 से 4.1.1 के लिए प्रवास के साथ इस मुद्दे हो रहा है http://stackoverflow.com/questions/40686737/migration-from-glassfish-4-0-to-glassfish-4-1-1-jdbc-realm -issue – Bikram

उत्तर

16

हेक्स या बेस 64 के jdbcRealm की अनुमति देता है एन्कोडिंग मान:

नीचे मेरी सरल जावा कार्यक्रम कर रहे हैं।

Base64:

import com.sun.org.apache.xml.internal.security.utils.Base64; 
... 
byte[] digest = md.digest(); 
System.out.println(Base64.encode(digest)); 

हेक्स:

... 
byte[] digest = md.digest(); 
StringBuffer sb = new StringBuffer(); 
for (int i = 0; i < digest.length; i++) { 
    String hex = Integer.toHexString(0xff & digest[i]); 
    if (hex.length() == 1) sb.append('0'); 
    sb.append(hex); 
} 
System.out.println(sb.toString()); 
आप अपने दायरे विन्यास में और अपने कोड में इनमें से किसी एक निर्दिष्ट करने के लिए, इन स्वरूपों में से एक में बाइट सरणी में कनवर्ट की जरूरत है

बीटीडब्ल्यू, पासवर्ड फ़ील्ड प्रकार वर्कर (30)

आप अपना पासवर्ड मैदान के आकार को बढ़ाने के लिए की आवश्यकता होगी। SHA-256 बेस 64 और स मान लंबाई में 45 और 64 वर्णों क्रमश: कर रहे हैं।

+0

सुपर !!! आप एक जीवन रक्षक है। मैं थोड़ी देर के लिए इस बात को देख रहा हूं। आपका बहुत बहुत धन्यवाद। बेकार है कि मैं केवल आपको 1 वोट दे सकता हूं। –

+0

मैं 4.0 से 4.1.1 के लिए प्रवास के साथ इस मुद्दे हो रहा है http://stackoverflow.com/questions/40686737/migration-from-glassfish-4-0-to-glassfish-4-1-1-jdbc-realm-issue – Bikram