मेरी राय में आप गलत दिशा की ओर जा रहे हैं। लॉगिन मॉड्यूल में पासवर्ड बदलने के आपके दृष्टिकोण का उपयोग करने से कुछ समस्या है।
- उपयोगकर्ता लॉगिन आमतौर पर "सुरक्षित" प्रक्रिया होने की अपेक्षा की जाती है यानी "बिना" दुष्प्रभावों की प्रक्रिया होती है।
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
कैसे प्राप्त होता है?
CallbackHandler
PasswordCallback
के समान इंटरफ़ेस। आपने उल्लेख किया है कि लॉगिन मॉड्यूल CallbackHandler
का उपयोग करता है।
void handle(Callback[] callbacks)
आप को पता है handle
विधि CallbackHandler
API Documentation लागू करने के लिए कैसे चाहते हैं भी CallbackHandler
handle
विधि के एक कार्यान्वयन का एक उदाहरण प्रदान करता है।