2013-09-10 6 views
10

वर्तमान में मेरे पास एक स्विंग ऐप है और मैं कुछ भूमिकाओं को अनुमति देने और अनुमति देने के लिए अपाचे शिरो को एकीकृत नहीं करना चाहता हूं। मैं पहले से ही, कि मैं परीक्षण के लिए बनाए गए shiro.ini फ़ाइल से उपयोगकर्ताओं को पढ़ने के लिए प्रबंधित किया है यह कुछ इस तरह दिखता है:अपाचे शिरो - उपयोगकर्ताओं, भूमिकाओं और अनुमतियों को पढ़ने के लिए डेटाबेस का उपयोग

[users] 
admin = 123456, Administrator 

[role] 
Administrator = *:*:* 

हालांकि यह सिर्फ परीक्षण के लिए, अब मैं परमिट पढ़ने की जरूरत थी किसी डेटाबेस से तो मैं एक डेटाबेस की जानकारी के साथ एक मेज मैं जरूरत में जमा हो जाती है और यह इस तरह दिखता है:

users (id,password,username) 
userRoles (userId, role) 
rolePermission (permissionID,permission,roleID) 

मैं ट्यूटोरियल है कि एक JDBC दायरे का उपयोग समझने की कोशिश कर रहा है, लेकिन वे वेब का उपयोग करें एप्लिकेशन या स्पेशल फ्रेमवर्क जैसे डाटाबेस से अपाचे डर्बी या बोनसीपी जैसे उनके कनेक्शन को प्रबंधित करने के लिए, और वे these उदाहरणों के साथ मुझे और भी भ्रमित करते हैं।

तो मैं क्या पूछ रहा हूं कि अगर मैं एक जेडीबीसी दायरे (ओरेकल डेटाबेस के साथ) और shiro.ini की ज़रूरतों का उपयोग करना चाहता हूं तो मुझे shiro.ini फ़ाइल को कॉन्फ़िगर करने की आवश्यकता है। किसी भी उदाहरण या स्पष्टीकरण की सराहना की जाएगी!

+0

उत्तर देने का प्रयास करने से पहले, क्या आप जानते हैं कि जेडीबीसी का उपयोग कैसे करें और क्या आप संबंधपरक डेटाबेस को समझते हैं? –

+0

@ बालाससी नहीं, मैंने ऑनलाइन उदाहरण कहा, हाँ, जब भी आप उपयोगकर्ता भूमिकाओं और परमिट प्राप्त करने के लिए .ini फ़ाइल का उपयोग करते हैं, तो वे बहुत सरल हैं, लेकिन जब आप इस जानकारी को एक रिलेशनल डेटाबेस – Nivde

+0

@SotiriosDelimanolis I से पुनर्प्राप्त करना चाहते हैं, मैं एक विशेषज्ञ नहीं हूं, लेकिन मेरी समझ के लिए जेडीबीसी यह एक एप्लीकेशन प्रोग्रामिंग इंटरफ़ेस है जो आपको जावा भाषा – Nivde

उत्तर

8

Realm इंटरफ़ेस एक

सुरक्षा घटक है कि इस तरह के उपयोगकर्ताओं, भूमिका, और अनुमतियाँ प्रमाणीकरण और प्राधिकरण संचालन निर्धारित करने के लिए के रूप में आवेदन विशेष सुरक्षा संस्थाओं का उपयोग कर सकते है।

आप इसे उपयोगकर्ताओं और उनकी अनुमतियों को ढूंढने के लिए किसी भी स्रोत से बातचीत करने के लिए इसे कार्यान्वित कर सकते हैं। यदि आप SQL- आधारित डेटाबेस से बातचीत करना चाहते हैं, तो आप ऐसा कर सकते हैं। यदि आप एक टेक्स्ट फ़ाइल से बातचीत करना चाहते हैं, तो आप ऐसा कर सकते हैं। यदि आप किसी वेब सेवा से बातचीत करना चाहते हैं, तो आप भी ऐसा कर सकते हैं।

Realm के दो उपयोगी (लगभग आवश्यक) एक्सटेंशन हैं जो AuthenticatingRealm और AuthorizingRealm हैं। वे क्रमशः प्रमाणीकरण और प्राधिकरण सेवाओं के लिए एक इंटरफेस प्रदान करते हैं। AuthorizingRealmAuthenticatingRealm फैलाता है। अपने स्वयं के प्रमाणीकरण और प्राधिकृत तर्क को लागू करने के लिए आपको AuthorizingRealm का विस्तार करना चाहिए।

एक उदाहरण लें: आप Accounts रूप

username | password | role 

एक मेज Permissions रूप

permission_id | permission_name 

और एक मेज Account_Permissions

username | permission_id 

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

this document शिरो के प्रमाणीकरण अनुक्रम पर यह समझने के लिए कि AuthenticatingRealm कहां आता है।

INIfile का सवाल है, कैसे आप अपने Realm लागू के आधार पर आप

myRealm = com.company.security.shiro.YourDatabaseRealm 

संभवतः सेटिंग्स के रूप में यह घोषणा करने के लिए कुछ गुण की आवश्यकता होगी

myRealm.databaseName = account_database 

Shiro अपनी ही JdbcRealm वर्ग प्रदान करता है जो AuthorizingRealm बढ़ाता है। यह कक्षा आपके डेटाबेस की संरचना पर कुछ धारणाएं बनाती है, लेकिन आप इसे अनुकूलित कर सकते हैं।

+0

से डेटाबेस पर संचालन निष्पादित करने की अनुमति देता है अंत में मुझे शिरो को डेटा स्रोत प्रदान करने के लिए BoneCP का उपयोग करना पड़ा, मैं प्रबंधित करने की उम्मीद कर रहा था किसी भी बाहरी पुस्तकालयों का उपयोग किए बिना एक कनेक्शन। यह समझाने पर आपके धैर्य के लिए धन्यवाद, यह बहुत उपयोगी था और अंत में मैंने शिरो को लागू करने में कामयाब रहे, और अवधारणाओं को समझ लिया क्योंकि यहां पर आपकी संक्षिप्त जानकारी है। – Nivde

+0

@ nivde92 आपका स्वागत है। ध्यान दें कि ऊपर दिए गए 'डेटासोर्स' के बावजूद उपर्युक्त लागू होता है। दो अलग-अलग परतें हैं जिनके बारे में हम बात कर रहे हैं। –

+0

उदाहरण सारणी केवल * उपयोगकर्ता-आधारित * अनुमतियां, ** नहीं ** * भूमिका-आधारित * अनुमतियां दर्शाती हैं। * भूमिका-आधारित * आमतौर पर यह भी दर्शाता है कि किसी विषय में कई भूमिकाएं हो सकती हैं। –

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