/ / CAS DB ऑथेंटिकेशन "एनकोड" पासवर्ड एन्क्रिप्शन, स्प्रिंग सिक्योरिटी के ShaPasswordEncoder - स्प्रिंग, एन्क्रिप्शन, स्प्रिंग-सिक्योरिटी, पासवर्ड, कैस का उपयोग करके एन्क्रिप्ट किए गए डेटाबेस पासवर्ड से मेल नहीं खा सकता है।

सीएएस डीबी प्रमाणीकरण "एन्कोड" पासवर्ड एन्क्रिप्शन स्प्रिंग सिक्योरिटी के शापासवर्ड एन्कोडर - वसंत, एन्क्रिप्शन, वसंत-सुरक्षा, पासवर्ड, कैस का उपयोग करके एन्क्रिप्टेड डेटाबेस पासवर्ड से मेल नहीं खाता

मैं वर्तमान में अपने CAS सर्वर v5.0 को कॉन्फ़िगर कर रहा हूं।2, डेटाबेस प्रमाणीकरण का उपयोग करने के लिए, विशेष रूप से सांकेतिक शब्दों में बदलना विधि, कैस गुण फ़ाइल का उपयोग कर। नीचे गुण फ़ाइल से प्रासंगिक संपत्ति विन्यास हैं:

cas.authn.jdbc.encode[0].sql=SELECT * FROM public.vt_user WHERE email=?
cas.authn.jdbc.encode[0].driverClass=org.postgresql.Driver
cas.authn.jdbc.encode[0].url=jdbc:postgresql://localhost:5432/tracking
cas.authn.jdbc.encode[0].user=postgres
cas.authn.jdbc.encode[0].password=postgres
cas.authn.jdbc.encode[0].saltFieldName=salt
cas.authn.jdbc.encode[0].passwordFieldName=password
cas.authn.jdbc.encode[0].healthQuery=SELECT 1 FROM INFORMATION_SCHEMA.TABLES
cas.authn.jdbc.encode[0].numberOfIterations=1
cas.authn.jdbc.encode[0].numberOfIterationsFieldName=
cas.authn.jdbc.encode[0].staticSalt=
cas.authn.jdbc.encode[0].algorithmName=SHA-1
cas.authn.jdbc.encode[0].dialect=org.hibernate.dialect.PostgreSQLDialect

cas.authn.jdbc.encode[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.encode[0].passwordEncoder.characterEncoding=utf-8
cas.authn.jdbc.encode[0].passwordEncoder.encodingAlgorithm=SHA-1

मैं जिस डेटाबेस से जुड़ रहा हूं वह एक PostgreSQL हैडीबी। पासवर्डों को पहले स्प्रिंग सुरक्षा का उपयोग करके एनकोड किया गया था। डिफ़ॉल्ट पावर के साथ 3.2.5 ShaPasswordEncoder है जो SHA-1 प्लस और एक नमक मूल्य है। मैंने CAS सर्वर के डिफ़ॉल्ट लॉगिन पेज में मान्य क्रेडेंशियल दर्ज करके CAS DB प्रमाणीकरण कॉन्फ़िगरेशन का परीक्षण किया है। लेकिन प्रमाणीकरण हमेशा विफल रहता है और "अमान्य क्रेडेंशियल्स" लौटाता है। इसके अतिरिक्त, मुझे पहले से ही पता है कि 3.2.5 ShaPasswordEncoder पदावनत है, लेकिन मैं इसे लागू करने की योजना नहीं बना रहा हूं। लॉग दिखाते हैं कि उपयोगकर्ता तालिका से उपयोगकर्ता नाम सफलतापूर्वक मिटाया जा सकता है, लेकिन तालिका और पासवर्ड से। इनपुट डॉन "टी मैच।

अभी मैं इस मुद्दे को हल करने के लिए किसी भी दृष्टिकोण की तलाश कर रहा हूं। मैं कैस के लिए अभी भी अपेक्षाकृत नया हूं, और मैं वास्तव में बहुत जरूरी मदद की सराहना करता हूं। धन्यवाद!

उत्तर:

जवाब के लिए 0 № 1

मैंने इस मुद्दे को संशोधित करके हल कियाQueryAndEncodeDatabaseAuthenticationHandler.java कैस-सर्वर-यूसीपी-जेडडीबीसी निर्भरता (उसी कैस संस्करण के) से स्प्रिंग फाइल का उपयोग कैस द्वारा किए गए एक के बजाय स्प्रिंग सिक्योरिटी शनैसैन्स्क्यूलर का उपयोग करने के लिए है जो अपाचे शिरो की डिफ़ॉल्ट हैश सेवा है। विशेष रूप से, मैंने जो भी किया वह संशोधित जावा फ़ाइल (प्लस AbstractJdbcUsernamePasswordAuthenticationHandler.java) को कैस मावेन ओवरले के अंदर जोड़ने के लिए था कि मैं "s / मुख्य / java / org / apereo / cas / adapters / jdbc निर्देशिका के अंदर का उपयोग कर रहा हूं।" फ़ंक्शन जो मैंने जावा फ़ाइल के अंदर संशोधित किया है, उसका नाम डाइजेस्टोडेडपासवर्ड है। मैंने कोड की मूल लाइनों की टिप्पणी की और इसे ShaPasswordEncoder के मेरे कार्यान्वयन के साथ बदल दिया। कस्टम स्रोत कोड का निर्माण कैस के साथ किया जाना चाहिए।