2009-09-21 10 views
15

मैं एक सुरक्षित लॉगिन/लॉगआउट तंत्र बनाना चाहता हूं। मैं निम्नलिखित लेख पढ़ने के चीजों की एक विचार प्राप्त करने के लिए ध्यान में रखना शुरू कर दिया:किसी वेब एप्लिकेशन में HTTPS लॉगिन पृष्ठ को कैसे कार्यान्वित करें?

ये लेख कुछ अच्छे अंक बनाने के लिए, लेकिन मैं एक में HTTPS का उपयोग करने में सोच रहा था याहू मेल लॉगिन पेज के समान ही। आप जानते हैं ... आप http://mail.yahoo.com टाइप करते हैं और आपको http: //**login.yahoo.com/config/login जैसे HTTPS पृष्ठ पर रीडायरेक्ट किया जाता है जहां आप अपना उपयोगकर्ता नाम और पासवर्ड डालते हैं और आपके क्रेडेंशियल सत्यापित होने के बाद आपको रीडायरेक्ट किया जाता है एक उत्पन्न पृष्ठ पर वापस session_id कुकी के साथ और वहां से सभी संचार कुकी का उपयोग कर HTTP पर हैं।

मुझे इस व्यवहार को लागू करने की क्या ज़रूरत है?

मैं इसे दो जावा वेब ऐप्स (स्प्रिंग फ्रेमवर्क के साथ एक और स्ट्रैट्स 1 के साथ एक) के लिए करना चाहता हूं, लेकिन यह नहीं पता कि एप्लिकेशन में उस HTTPS भाग को एकीकृत करने के लिए बिल्कुल सही नहीं है (मैंने पहले कभी HTTPS के साथ काम नहीं किया है)।

उत्तर

15

सबसे पहले आपको अपने सर्वर के लिए SSL सक्षम करने की आवश्यकता है। मैं वसंत सुरक्षा सलाह देते हैं

<Connector port="8443" scheme="https" secure="true" SSLEnabled="true" 
    keystoreFile="mykeystore" sslProtocol="TLS" 
    keystorePass="keystore password" /> 

अपने आवेदन में एसएसएल एकीकृत करने के लिए: बिलाव के लिए आप एक openssl कुंजीस्टोर पैदा करते हैं और server.xml के लिए निम्न कनेक्टर जोड़ने की जरूरत है। यह वही ऑफर करता है जो आप चाहते हैं (HTTPS पर लॉगिन करें, फिर HTTP पर रीडायरेक्ट करें)। तुम सब इसे लागू करने के क्या करना है, सच को forceHTTPS स्थापित करने के लिए है:

<bean id="authenticationProcessingFilterEntryPoint" 
class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint"> 
    <property name="loginFormUrl" value="/pages/login.jsp" /> 
    <property name="forceHttps" value="true"/> 
</bean> 

पाठ्यक्रम वसंत और स्प्रिंग सुरक्षा का ऐसा एक नहीं बल्कि खड़ी सीखने की अवस्था है, लेकिन यह यह पूरी तरह से लायक है। इसे एक बार करें और फिर आप इसे एक घंटे से भी कम समय में नए ऐप्स पर लागू कर सकते हैं। आप स्प्रिंग और स्ट्रूट्स दोनों एप्लिकेशन में स्प्रिंग सिक्योरिटी का उपयोग कर सकते हैं।

वसंत सुरक्षा एसीजी सुरक्षा के लिए उपयोग की जाती थी। यह एक article है जो आपको शुरू कर देगा।

3

किसी भी जावा या वसंत बारीकियों के बारे में सुनिश्चित नहीं हैं, लेकिन सामान्य रूप में:

1) अपने सर्वर पर एक SSL प्रमाणपत्र स्थापित करें।

2) आगे या https के साथ एक पूर्ण URL से लिंक करें (: //) सफल प्रमाणीकरण के बाद: // शुरुआत में) जब प्रवेश पृष्ठ पर

3) आगे एक पूर्ण यूआरएल के लिए (http के साथ जा रहा।

4) केवल लॉगिन कनेक्शन को स्वीकार करने के लिए लॉगिन पृष्ठ कोड में एक चेक शामिल करें।

बेशक पूर्ण यूआरएल को स्पष्ट रूप से निर्दिष्ट करने के बिना http/https रीडायरेक्ट करने के ढांचे के विशिष्ट तरीके हो सकते हैं।

3

@see Acegi (वसंत सुरक्षा)

मैं यह सब आवश्यक घटक प्रदान करता है लगता है। उदाहरण के लिए यह https के माध्यम से लॉगिन का समर्थन करता है। एक अच्छा reference है। Https लॉगिन कैसे प्राप्त करें आप here पढ़ सकते हैं। मुझे लगता है कि आपको सब पढ़ना चाहिए।

+1

आप शायद – Chii

+0

देखने के लिए एसीजीई के किस हिस्से के बारे में कुछ और बताना चाहते हैं, क्या आप इस कार्यक्षमता को लागू करने के लिए एसीजी का उपयोग कैसे कर सकते हैं इसका एक उदाहरण प्रदान कर सकते हैं? –

+0

टिप्पणियों के लिए धन्यवाद। मैंने कुछ लिंक जोड़े, क्योंकि यहां सभी आवश्यक विवरण डालना मुश्किल है। –

1

मैं किसी प्रकार के एक साइन-ऑन समाधान की जांच करने की सिफारिश करता हूं। Google में एक त्वरित खोज JOSSO, Open SSO, और CAS उत्पन्न करती है, दूसरों के बीच। मैंने पहले सीएएस के साथ थोड़ा सा काम किया है और इसके साथ कुछ सकारात्मक अनुभव हुए हैं। स्प्रिंग सिक्योरिटी को सीएएस के साथ काम करने के लिए भी समर्थन मिला है।

1

सुरक्षित पृष्ठों के लिए टोकन की जांच करने के लिए एक स्क्रिप्ट लोड करें।

अपनी स्क्रिप्ट के शीर्ष पर

:

if(!getSecurityToken()) // 1 
    redirect(login_page) 

if(!checkToken(token)) // 2 
    redirect(login_page) 

प्रवेश पृष्ठ सुरक्षित टोकन सेट और एक सत्र है, जो तब अनुरोध में पारित किया जाएगा बनाना चाहिए। सर्वर ट्रैक करता है कि कौन सा सत्र किस टोकन का मालिक है। सर्वर को लागू करने के लिए आपको अपनी स्क्रिप्ट के लिए चेक टोकन विधि लागू करना होगा। टोकन कुकीज़ में सहेजा जाना चाहिए या फिर पृष्ठ में सहेजे गए किसी भी समय (बाद के अनुरोधों के लिए)।

जब सर्वर पर कोई अनुरोध किया जाता है तो इसमें टोकन होना चाहिए, या फिर रीडायरेक्ट विफल हो जाएगा (1)।

जब उपयोगकर्ता सत्र समाप्त हो जाता है (लॉगआउट या टाइमआउट द्वारा) तो सर्वर में मैपिंग अब मौजूद नहीं होगा (टोकन आईडी पर सत्र आईडी) और इस प्रकार टोकन के साथ कोई भी नया अनुरोध अमान्य होगा और रीडायरेक्ट (2) ।

0

इस पोस्ट में एक दिलचस्प समाधान है:

http://forum.springsource.org/archive/index.php/t-65651.html

पुरुष एक फिल्टर का इस्तेमाल किया स्विच के दौरान सत्र सक्रिय रखने के लिए (https - http)

यह मेरे लिए काम किया!

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