2012-09-25 5 views
10

में निजी और सार्वजनिक प्रमाण-पत्रों का उपयोग एक साक्षात्कार साक्षात्कारकर्ता ने मुझसे पूछा कि आपको JAAS में निजी प्रमाण-पत्र क्यों चाहिए?
हम की तरह दोनों सार्वजनिक और निजी साख क्रेडेंशियल में पहुंच सकते हैं:जेएएएस

Set<Object> privateCredentials = subject.getPrivateCredentials(); 
Set<Object> publicCredentials = subject.getPublicCredentials(); 

दोनों (privateCredentials और publicCredentials) सुलभ हैं और पहुंच के रास्ते एक ही हैं।
तो, टॉव प्रकार के प्रमाण-पत्रों के लिए महत्व क्या है?

+0

इस PKI क्रिप्टोग्राफी में निजी कुंजी की भूमिका के बारे में कोई सामान्य प्रश्न है? – Alex

उत्तर

6

"जावा और इंटरनेट सुरक्षा" थिओडोर Shrader, ब्रूस ए रिच, एंथनी जे Nadalin द्वारा पुस्तक से:

कुछ और अधिक विवाद के साथ, JAAS डिजाइनरों ने निष्कर्ष निकाला है प्रधानाध्यापकों सबूत किसी प्रकार का हो सकता है पहचान के कि उन्हें एक पल की सूचना प्रदान करने में सक्षम होने की आवश्यकता है, और पहचान के इन प्रमाणों में संवेदनशील जानकारी शामिल हो सकती है, इसलिए सार्वजनिक प्रमाण-पत्रों का एक सेट और निजी प्रमाण-पत्रों का एक सेट भी विषय में जोड़ा गया। चूंकि एक क्रेडेंशियल की सामग्री प्रमाणीकरण तंत्र में व्यापक रूप से भिन्न हो सकती है, एक साधारण पासवर्ड से एक फायर प्रिंटर (इनफाईटी और परे) तक, एक क्रेडेंशियल का प्रकार बस java.lang.Obiect के रूप में छोड़ा गया था। प्रिंसिपल और क्रेडेंशियल्स, यदि कोई हो, के बीच संबंध, विशेष प्रिंसिपल क्लास (या अधिक संभावना, विशेष लॉगिन मॉड्यूल क्लास) के कार्यान्वयन के लिए अभ्यास के रूप में छोड़े गए थे। एक जेएएएस परिप्रेक्ष्य से, निजी और सार्वजनिक प्रमाण-पत्रों के बीच एकमात्र अंतर यह है कि एक विशेष javax.security.auth.AuthPermission को निजी क्रेडेंशियल के सेट तक पहुंच के लिए आवश्यक है।

1

JAAS Reference Guide से:

क्रम निजी साख का एक सेट के माध्यम से पुनरावृति करने के लिए, आप प्रत्येक क्रेडेंशियल एक्सेस करने के लिए एक javax.security.auth.PrivateCredentialPermission की जरूरत है। अधिक जानकारी के लिए PrivateCredentialPermission एपीआई दस्तावेज देखें।

+0

यह क्यों कम किया गया था? यह अफ्रीका के सभी उत्तरों का सबसे संक्षिप्त है। यह भी पूरी तरह से समझदार है - निजी प्रमाण-पत्रों तक पहुंच प्रतिबंधित हो सकती है, जो कि उनका पूरा बिंदु प्रतीत होता है। – fgp

+3

मैंने डाउनवोट नहीं किया, लेकिन यह सवाल का जवाब नहीं देता है। वह एपीआई और अनुमतियों के बारे में नहीं पूछ रहा है, वह पूछ रहा है कि हमें जेएएएस में निजी प्रमाण-पत्रों की आवश्यकता क्यों है। – EJP

0

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

मैं Krb5LoginModule के साथ JAAS का उपयोग कर रहा हूं और उदाहरण के लिए, हमारे मामले में, प्रिंसिपल उपयोगकर्ता विवरण (उपयोगकर्ता नाम + realm - i.e - "[email protected]") का प्रतिनिधित्व करता है।
उपयोगकर्ता के पास अंतर्निहित क्रिप्टोग्राफिक तंत्र के आधार पर निजी और सार्वजनिक प्रमाण-पत्रों का एक सेट हो सकता है (मुझे आशा है कि मैं यहां एक सही शब्द का उपयोग कर रहा हूं) - उदाहरण के लिए, यदि असममित कुंजी क्रिप्टोग्राफी का उपयोग किया जाता है, तो आप getPublicCrendetials का उपयोग कर सकते हैं सार्वजनिक कुंजी पर जानकारी प्राप्त करें।
getPrivateCredentials में निजी कुंजी का एक सेट होगा, और आपको उस सूची को प्राप्त करने के लिए शायद विशेषाधिकारों की आवश्यकता होगी।
हालांकि मैंने पहले कभी कोशिश नहीं की, शायद आप निजी कुंजी प्राप्त करने और डिजिटल हस्ताक्षर के लिए इसका उपयोग करने के लिए getPrivateCredentials का उपयोग कर सकते हैं?

मैं आपको बता सकता हूं कि मैंने केर्बेरोज टिकट प्राप्त करने के लिए इन विधियों का उपयोग किया, और इसकी वैधता (समाप्ति समय) पर जानकारी प्राप्त की। मुझे आशा है कि इससे आपको कुछ और विचार मिलेगा कि यह विभाजन क्यों बनाया गया था।

1

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

हालांकि जब आप करते हैं तो उन्हें चाहिए, आपको उन्हें सार्वजनिक प्रमाण-पत्रों से अलग होने की आवश्यकता है, क्योंकि वे निजी हैं, सार्वजनिक नहीं हैं, innit? और वास्तव में उन्हें पहुंचने के लिए PrivateCredentialPermissions की आवश्यकता के द्वारा आगे संरक्षित किया जा सकता है।

0

सार्वजनिक प्रमाण-पत्रों को स्वतंत्र रूप से उजागर किया जा सकता है और विषय पर चारों ओर पारित किया जा सकता है। उदाहरण:

  • प्रमाण पत्र
  • सार्वजनिक कुंजी

निजी साख रहस्य हैं। चूंकि विषय वस्तुएं व्यापक दर्शक हो सकती हैं, इसलिए इन्हें "बाहरी लोगों" द्वारा एक्सेस से छुपाया जाना चाहिए। एपीआई विषय के निजी प्रमाण-पत्रों तक पहुंचने के लिए प्रतिबंध प्रदान करता है, जो अन्य उत्तरों में विस्तृत हैं। उदाहरण:

  • पासवर्ड
  • निजी कुंजी
संबंधित मुद्दे