2015-12-14 10 views
6

दिखाए बिना जेएएएस स्वचालित लॉगिन मेरे पास एक जावा वेबपैप है जो स्प्रिंग एमवीसी का उपयोग करता है। वेबपैप एक jboss AS7.1 सर्वर पर चल रहा है जो फॉर्म-प्रमाणीकरण के साथ जेएएएस लॉगिन मॉड्यूल का उपयोग करता है। जब उपयोगकर्ता उपयोगकर्ता के उपयोगकर्ता नाम और पासवर्ड में फॉर्म भरता है तो आसानी से काम करता है।लॉगिन पृष्ठ/फॉर्म

अब मैं एक जावा नियंत्रक बनाना चाहता हूं जो "उपयोगकर्ता को लॉग इन करता है" जैसे उपयोगकर्ता लॉग इनफॉर्म में भर जाता है।

public void logInProgrammatically(String username, string password) 
{ 
    //??? 
} 

खत्म उपरोक्त विधि, किसी भी सुरक्षित पेज के लिए किसी भी पहुंच नहीं है क्योंकि उपयोगकर्ता के प्रवेश माना जाता है की अनुमति दी जानी चाहिए।

इस loginModule की Jboss के कार्यान्वयन तक पहुँचने, और कुछ संपत्ति की स्थापना द्वारा प्रोग्राम किया जा सकता है ?

+0

क्या मैं पूछ सकता हूं कि आप किस समस्या का समाधान करने की कोशिश कर रहे हैं? –

उत्तर

0

WebAuthentication जोबॉस से लगभग बॉक्स के बाहर वांछित कार्यक्षमता प्रदान करता है। विचार यह है कि आप अपना खुद का सर्वलेट या कस्टम क्लास बना सकते हैं, जैसे here प्रस्तुत किया गया है जो सीधे निर्दिष्ट user और password के साथ कॉल कर सकता है।

आईई। में अपने logInProgrammatically आप क्या LoginHandlerhere प्रस्तुत में लागू किया गया करने के लिए कुछ इसी तरह हो सकता है:

public void logInProgrammatically(String username, string password) 
{ 
    // ... 
    WebAuthentication webA = new WebAuthentication(); 
    webA.login(username, password); 
    // ... 
} 
+0

वेब प्रमाणीकरण वर्ग JBOSS7 में मौजूद नहीं है। यह पुराने jboss संस्करणों में उपलब्ध है। मुझे यकीन नहीं है कि इसे क्यों हटा दिया गया था। क्या कोई विकल्प है? – user1884155

+0

@ user1884155 जैसा कि आपके अन्य प्रश्न पर टिप्पणी में उल्लेख किया गया है। आप 'सर्वलेट 3 प्रमाणीकरण फ़िल्टर' का उपयोग कर सकते हैं, जो 'सर्वलेट 3' लॉगिन चश्मे का उपयोग कर रहा है। – dan

0

आप प्रोग्राम के प्रमाणीकरण प्राप्त करने के लिए JAAS मानक वर्गों का उपयोग कर सकते हैं। आइए कहें कि हम अपने कस्टम लॉगिन मॉड्यूल कार्यान्वयन (या किसी भी मानक कार्यान्वयन), com.sample.CustomLoginModule का उपयोग कर रहे हैं। यह लॉगिन मॉड्यूल jboss कॉन्फ़िगरेशन एक्सएमएल में कॉन्फ़िगर किया गया है।

चरण 1: जेबॉस में एक सुरक्षा डोमेन को परिभाषित करें। अन्य सर्वरों के लिए, एक ही जानकारी JAAS कॉन्फ़िगरेशन में कॉन्फ़िगर किया जा सकता है।

<security-domain name="customlogin" cache-type="default"> 
    <authentication> 
     <login-module code="com.sample.CustomLoginModule" flag="required"> 
     </login-module> 
    </authentication> 
</security-domain> 

चरण 2: उपयोगकर्ता को प्रोग्रामिक रूप से लॉगिन करने के लिए कस्टम लॉगिन मॉड्यूल का उपयोग करें।

public void logInProgrammatically(String username, string password){ 
    CallbackHandler handler = //use proper implementation to capture username and password arguments. 
    LoginContext ctx = new LoginContext("customlogin", handler); 
    ctx.login(); 

}

इस समाधान के साथ

, आप विशिष्ट अनुप्रयोग सर्वर एपीआई के लिए बाध्य नहीं कर रहे हैं। यह कोड JAAS कॉन्फ़िगरेशन परिवर्तनों के साथ किसी भी एप्लिकेशन सर्वर पर पोर्टेबल है।

प्रोग्राम के JAAS का उपयोग करके प्रमाणित के लिए, Oracle से ट्यूटोरियल देखें: http://docs.oracle.com/javase/7/docs/technotes/guides/security/jaas/tutorials/GeneralAcnOnly.html

+0

यह काम नहीं करता है क्योंकि यद्यपि मैं संदर्भ में लॉग इन हूं, जेबीओएसएस कंटेनर इस तथ्य से अवगत नहीं है। इस प्रकार, यह सुरक्षित पृष्ठों तक पहुंच को रोक देगा और लॉग इनस्क्रीन दिखाएगा। ऐसा क्यों है? Jboss क्या/जादुई (अनुरोध) संपत्ति करता है/लॉगिन करता है कि लॉगिन संदर्भ सेट/उपयोग नहीं करता है? – user1884155

1

मेरा मानना ​​है कि यह है तुम क्या चाहते हो: Authenticating Users Programmatically। यह सर्वलेट एपीआई 3.0 का हिस्सा है, जेबॉस लॉगिन मॉड्यूल नहीं।

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