calendar - सैंडटेक्स्ट पासवर्ड के बिना एक्सचेंज वेब सर्विसेस सर्वर-टू-सर्वर प्रमाणीकरण?




outlook exchange-server office365 exchangewebservices (3)

मैं एक सर्वर अनुप्रयोग का निर्माण कर रहा हूं जो स्वचालित प्रक्रिया चलाता है, जिसे एक्सचेंज सर्वर के साथ संस्करण 2007 में संगत होना चाहिए। मैं वर्तमान में Office 365 कनेक्शन के लिए एज़ुर एडी के माध्यम से ओअथ का उपयोग करता हूं, लेकिन मैं अभी भी ऑन-प्रिमाइसेस के लिए एक समाधान खोजने का प्रयास कर रहा हूं 2013 के पूर्व एक्सचेंज

मैं एक्सचेंज प्रमाणीकरण (बुनियादी, एनटीएलएम, आदि) के बारे में पढ़ रहा हूं और मुझे एक दीर्घकालिक टोकन सिस्टम के लिए कोई संदर्भ नहीं मिल सकता है जो मुझे एक बार उपयोग पासवर्ड के साथ प्रमाणीकरण सेटअप करने की अनुमति देगा। मैं एक मजबूत डीबी, एन्क्रिप्टेड या नहीं, उपयोगकर्ता के पासवर्ड को बहुत सख्त से रखता हूं, क्योंकि यह एक बड़ी सुरक्षा जिम्मेदारी है और रिवर्स इंजीनियर हो सकता है।

क्या मुझे याद आ रही है?

क्या हर बार पासवर्ड के बिना एक्सचेंज को प्रमाणित करने का एक तरीका है?


Answers

मुझे डर नहीं लग रहा है. कनेक्शनों को ऑन-प्रिमाइस सर्वर के लिए पासवर्ड की आवश्यकता होगी


मेरा अपना प्रश्न अनुवर्ती के रूप में उत्तर दे रहा है, क्योंकि मुझे कुछ प्रतिक्रियाओं से संतुष्ट नहीं था और / या मैं व्यापक खोज के माध्यम से क्या हासिल कर पा रहा था।

एक्सचेंज सर्वरों में कितने शोध किए जाने के बाद, वे कैसे प्रमाणित करते हैं, और प्रोटोकॉल को समर्थित और इस्तेमाल किया जाता है, मुझे पता चला कि मैं क्या सबसे अच्छा विकल्प मानता हूं: NTLM

अब, मुझे समझाने दो।

जो लक्ष्य मैं हासिल करने की कोशिश कर रहा था वह निम्नलिखित था:

  • Exchange 2007+ सर्वर पर प्रमाणित करने में सक्षम रहें
  • प्रारंभिक प्रक्रिया के माध्यम से प्रमाणीकरण "एक-बार-सेटअप" होना चाहिए
  • कभी भी सादे-पाठ पासवर्डों को स्टोर न करें (विशेषकर एक प्लेटफॉर्म / सेवा केंद्रीय डेटाबेस में)

मन में उन बिंदुओं के साथ:

  • मैं "बेसिक" ऑथ का उपयोग नहीं कर सकता क्योंकि इससे उपयोगकर्ता के पासवर्ड को सेंट्रल डेटास्टोर में सादा-पाठ में संग्रहित करने की आवश्यकता होगी
  • OAuth काम नहीं करता क्योंकि यह केवल एक्सचेंज 2013+ पर समर्थित है

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

दुर्भाग्य से, एनटीएलएम को इसके विनिर्देश के संदर्भ में एक "गुप्त" का एक लंबा समय रखा गया है यह एक मालिकाना कल्पना है, इसलिए यह आंतरिक के बारे में जानकारी दुर्भाग्यवश बल्कि असामान्य है। एक लंबे समय के लिए, एनटीएलएम के बारे में विनिर्देश जानकारी का एकमात्र वास्तविक स्रोत वास्तव में जानकारी थी जो रिवर्स-इंजीनियर था (धन्यवाद एरिक ग्लास!) । शुक्र है, हालांकि, माइक्रोसॉफ्ट ने अंततः अपने एमएसडीएन साइट पर एनटीएलएम पर प्रलेख प्रकाशित करने शुरू कर दिया था।

प्रोटोकॉल को बहुत भारी रूप में देखने के बाद, और कॉन्फ़िगरेशन के कई अलग-अलग क्रमांतरों में एक परीक्षण एक्सचेंज सर्वर पर कुछ परीक्षण चलाने के बाद, मुझे एहसास हुआ कि एनटीएलएम वास्तव में मेरी सभी आवश्यकताओं को फिट करेगा कैसे? खैर, प्रोटोकॉल का काम करने के लिए धन्यवाद, एक बार एक क्रेडेंशियल धोया गया है (युक्ति में [एलएम, एनटीवी 1, एनटीवी 2] में संभव 3 तरीकों में से एक में) इसे फिर से धोया जाना जरूरी नहीं है लक्ष्य इसका मतलब यह है कि, एक विशिष्ट पंजीकरण तंत्र के लिए उपयोगकर्ता के पासवर्ड को हंसिंग जैसा है, आप केवल एक्सचेंज / एनटीएलएम क्रेडेंशियल अप-फ्रंट के लिए पूछ सकते हैं और फिर एक बार क्रेडेंशियल हश कर सकते हैं।

ध्यान दें!!! कुछ पकड़ा गया है!

ध्यान रखें कि एक बार क्रेडेंशियल हैश करने में सक्षम होने और इसे कई बार उपयोग करने का मतलब यह है कि हैश कुछ "पासवर्ड बराबर" है इसके द्वारा मेरा क्या मतलब है, यह है कि एक बार एक पासवर्ड के रूप में उपयोग किया जा सकता है, क्योंकि यह भविष्य में प्रमाणित करने के लिए आवश्यक जानकारी के केवल एक टुकड़े में से एक है। (यह कोलाकी रूप से "पास-द-हैश" के रूप में जाना जाता है)।

वैकल्पिक को ध्यान में रखते हुए, हालांकि, सादा-पाठ में पासवर्ड को संचित करने की, यह अभी भी बेहतर है क्यूं कर? क्योंकि कम से कम आप एक कच्चे क्रेडेंशियल संग्रहीत नहीं कर रहे हैं जो कि किसी भी अन्य प्रमाणीकरण स्कीम में उपयोग किया जा सकता है या किसी पासवर्ड को लीक कर सकता है जिसे अन्य वातावरण में साझा किया जा सकता है (हां, लोग दुर्भाग्य से ऐसा करते हैं)।

यह देखते हुए कि ज्ञान, इन हैंड क्रेडेंशियल्स को संचय करते समय अब ​​भी बहुत सावधानी बरतनी चाहिए। अंत में, यदि एक और मजबूत प्रमाणीकरण योजना का उपयोग किया जा सकता है, तो इसका उपयोग करें

इसलिए, जिस तरह से NTLM प्रोटोकॉल काम करता है, धन्यवाद, यह आवश्यकताओं को पूरा करता है:

  • Exchange 2007+ सर्वर पर प्रमाणित करने में सक्षम रहें
    • एनटीएलएम सभी एक्सचेंज सर्वर 2007+ में उपलब्ध है
  • प्रारंभिक प्रक्रिया के माध्यम से प्रमाणीकरण "एक-बार-सेटअप" होना चाहिए
    • क्रेडेंशियल्स और लक्ष्य की आवश्यकता केवल एक बार दर्ज की जाती है, जैसे कि एक बार प्रारंभिक हेन्डशेक सर्वर के साथ किया जाता है, आपको पता चल जाएगा कि auth स्कीम काम करती है। (यह निश्चित रूप से यह विचार नहीं करता है कि दूरस्थ एक्सचेंज सर्वर का कॉन्फिगरेशन किसी भी समय बदला जा सकता है। इसलिए उचित त्रुटि संभाल अभी भी बहुत ज्यादा जगह में होना चाहिए)
  • कभी भी सादे-पाठ पासवर्डों को स्टोर न करें (विशेषकर एक प्लेटफॉर्म / सेवा केंद्रीय डेटाबेस में)
    • हैश क्रेडेंशियल इसके बजाय संग्रहीत है। हालांकि, "कैच" के पहले नोट में समझाया जाने के कारण नियोजित एक संभावित दोहरे एन्क्रिप्शन तकनीक के साथ, महान देखभाल की जानी चाहिए।

वैसे भी, मुझे आशा है कि किसी और को यह किसी बिंदु पर मिल जाएगा ताकि उन्हें ज्यादा विनिर्देश पढ़ने और प्रयोग करना जरूरी नहीं है जैसा कि मुझे करना था।

साथ ही, इसके लिए, जैसा कि मैंने देखा कि एनटीएलएम के ओपन सोर्स के कार्यान्वयन दुर्लभ ही नहीं हैं, बल्कि अधिक सामान्य रूप से केवल आधे-पूर्ण, मेरी टीम ने पीएचपी में हमारे एनटीएलएम कार्यान्वयन का खुलासा किया है। यह GitHub पर उपलब्ध है


जावा 8 में, एक नई तिथि / समय एपीआई जेएसआर 310 है जो अधिक सनी है। स्पेस लीड जोडाटाइम के प्राथमिक लेखक के समान है और वे कई समान अवधारणाओं और पैटर्न साझा करते हैं।