2017-05-16 26 views
6

पर वाइल्डफ्लाई सर्वर प्रमाणीकरण मॉड्यूल से 'पासवर्ड समाप्ति' जानकारी पास करना हमारे पास एक वाइल्डफ्लाई 10 जेईई एप्लिकेशन और एक जावा वसा क्लाइंट है जो सर्वर के साथ संवाद करने के लिए दूरस्थ ईजे कॉल का उपयोग करता है। प्रमाणीकरण वाइल्डफ्लाई सर्वर में एक कस्टम लॉगिन मॉड्यूल का उपयोग कर किया जाता है।रिमोट ईजेबी क्लाइंट

अब हमारे पास इस लॉगिन मॉड्यूल को पासवर्ड समाप्ति की अवधारणा के साथ बढ़ाने की आवश्यकता है। जब भी कोई पासवर्ड समाप्त हो जाता है तो उपयोगकर्ता को लॉगिन प्रक्रिया के दौरान अपना पासवर्ड बदलना पड़ता है। लॉगिन मॉड्यूल जेएएएस कॉलबैक और जेएएएस कॉलबैक हैंडलर का उपयोग करता है। जहां तक ​​मुझे समझ में आया है कि हम लॉगिन करने के दौरान उपयोगकर्ता से नए पासवर्ड का अनुरोध करने के लिए javax.security.auth.callback.TextInputCallback का उपयोग कर सकते हैं।

यह रीमोटिंग के साथ कैसे एकीकृत करता है। अनुरोधित इनपुट प्रदान करने के लिए हमारे वसा ग्राहक को TextInputCallback कैसे प्राप्त होता है? मुझे लगता है कि हमें क्लाइंट साइड पर एक कस्टम कॉलबैक हैंडलर पंजीकृत करना है जो कॉलबैक को संसाधित करता है लेकिन मुझे वाइल्डफ्लाई के साथ ऐसा करने के तरीके पर कोई दस्तावेज नहीं मिला है। क्या कोई मुझे इस तरह के दस्तावेज या इस समस्या को हल करने के तरीके पर नमूना दे सकता है?

उत्तर

4

मेरी राय में आप गलत दिशा की ओर जा रहे हैं। लॉगिन मॉड्यूल में पासवर्ड बदलने के आपके दृष्टिकोण का उपयोग करने से कुछ समस्या है।

  • उपयोगकर्ता लॉगिन आमतौर पर "सुरक्षित" प्रक्रिया होने की अपेक्षा की जाती है यानी "बिना" दुष्प्रभावों की प्रक्रिया होती है।
  • TextInputCallback का उपयोग करके एक नया पासपोर्ट पूछने के लिए कम से कम अजीब है। TextInputCallback उपयोगकर्ता को पासवर्ड के लिए नियमित पाठ के लिए पूछने के लिए नहीं है उदाहरण के लिए एक दूसरा प्रमाणीकरण कारक (टाइमबेस) पिन CallbackHandler लागू करने वाला क्लाइंट यह नहीं जानता कि यह एक पासवर्ड है जिसे दिखाए जाने पर मास्क किया जाना पड़ सकता है स्कैन पर
  • दृष्टिकोण लॉग इन मॉड्यूल के एकल जिम्मेदार सिद्धांत का उल्लंघन करता है - एक लॉगिन मॉड्यूल उपयोगकर्ता को लॉग इन/प्रमाणित करने के लिए ज़िम्मेदार है।

ध्यान रखें कि आम तौर पर एक पासवर्ड बदलें आप एक प्रमाणीकृत/अधिकृत उपयोगकर्ता अपने पुराने पासवर्ड और जहां उपयोगकर्ता फिर से कर सकते हैं जो आम तौर पर भी एक दूसरे क्षेत्र प्रदान करता है पुनः डालकर पासवर्ड परिवर्तन की पुष्टि करने की जरूरत है जो के लिए उसका नया पासवर्ड दें। बस एक xxxCallback पर्याप्त नहीं लगता है।

यहां तक ​​कि किसी को नियंत्रण प्रवाह के लिए Exceptions का उपयोग नहीं करना चाहिए, मैं क्लाइंट को संकेत देने के लिए CredentialExpiredException का उपयोग करने का सुझाव देता हूं कि उपयोगकर्ता को पासवर्ड बदलना होगा। यह भी जिस तरह से ओरेकल WebLogic JAAS Examples

मेरे सभी टिप्पणियों के बाद से एक में यह करता है अगर आप अभी भी चाहते हैं/यह कस्टम LoginModule में लाना तो मैं उदाहरण PasswordChangeCallback के लिए अपने स्वयं के कस्टम Callback रों परिभाषित करने के लिए सुझाव देंगे की जरूरत या ConfirmPasswordCallback, NewPasswordCallback, VerifyNewPasswordCallback

आप बस उन्हें कस्टम LoginModule को जोड़ सकते हैं उन्हें रजिस्टर करने के लिए कोई जरूरत नहीं है। ध्यान रखें कि इन अतिरिक्त कॉलबैक के साथ मानक ग्राहकों को समस्या हो सकती है। आपके क्लाइंट को संबंधित CallbackHandler को लागू करना होगा।

JAAS में इस्तेमाल किया CallbackHander * अनुकूलित करने के लिए CallbackHandler API documentaion

एक डिफ़ॉल्ट CallbackHandler वर्ग कार्यान्वयन auth.login में निर्दिष्ट किया जा सकता कस्टम प्रेषक डिफ़ॉल्ट CallbackHandler

कॉन्फ़िगर करके दो तरीके हैं .defaultCallback हैंडलर सुरक्षा संपत्ति। सुरक्षा संपत्ति में स्थित जावा सुरक्षा गुण फ़ाइल में /lib/security/java.security नाम की फ़ाइल में सेट की जा सकती है। java.home सिस्टम प्रॉपर्टी के मान को संदर्भित करता है, और निर्देशिका निर्दिष्ट करता है जहां जेआरई स्थापित है।

या LoginContext के निर्माता के लिए तर्क के रूप में गुजरने के द्वारा। LoginContext दो कंस्ट्रक्टर्स जो स्वीकार एक CallbackHandler

public LoginContext(String name, CallbackHandler callbackHandler) 
     throws LoginException 


public LoginContext(String name, Subject subject, 
     CallbackHandler callbackHandler) throws LoginException 

LoginContext API Documentation

कैसे इसे हटाने के साथ एकीकृत करता है को देखने के प्रदान करता है?

यह वही होना चाहिए जैसा आप पहले से ही करते हैं। बहुत अंतर नहीं है।

हमारे वसा ग्राहक को TextInputCallback कैसे प्राप्त होता है?

CallbackHandlerPasswordCallback के समान इंटरफ़ेस। आपने उल्लेख किया है कि लॉगिन मॉड्यूल CallbackHandler का उपयोग करता है।

void handle(Callback[] callbacks) 

आप को पता है handle विधि CallbackHandler API Documentation लागू करने के लिए कैसे चाहते हैं भी CallbackHandlerhandle विधि के एक कार्यान्वयन का एक उदाहरण प्रदान करता है।

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