बिलाव 7.0.32 में इस प्रकार मैं घोंसला रियल्म्स कोशिश कर रहा हूँ (छद्म एक्सएमएल में यहाँ लिखा):बिलाव 7 नेस्टिंग CombinedRealm, LockoutRealm और DataSourceRealm
<CombinedRealm>
<LockoutRealm>
<DataSourceRealm/>
</LockoutRealm>
<UserDatabaseRealm/>
</CombinedRealm>
यह काम करने के लिए प्रतीत नहीं होता है - है टोमकैट में दो से अधिक स्तरों से घोंसला घूमना संभव है? मैं लॉग में एक चेतावनी मिलती है:
No rules found matching 'Server/Service/Engine/Realm/Realm/Realm'.
विचार के पीछे है कि वेब सेवा कुछ महत्वपूर्ण उपयोगकर्ताओं है कि उसकी पहुंच से वंचित नहीं किया जाना चाहिए है (उदाहरण के लिए एक डॉस के रूप में) और कुछ सामान्य उपयोगकर्ताओं, जो कमजोर पासवर्ड हो सकता है, जहां लॉकआउट रेमल सक्रिय होना चाहिए। मुझे यकीन है कि अन्य लोग इस स्थिति में रहे हैं।
यदि इसे प्राप्त करने का दूसरा तरीका है (उदाहरण के लिए लॉकआउटरम के लिए श्वेतसूची), तो कृपया मुझे बताएं।
एकल साइन ऑन भी आवश्यक है।
मुझे लगता है कि मौजूदा लॉकआउट रिम कोड को विस्तारित करने वाले खातों की सूची के साथ मौजूदा लॉकआउट रिम कोड को एक विकल्प होगा, लेकिन मैं अपने खुद के दायरे को लिखने के लिए उत्सुक नहीं हूं, इसलिए मैं उस स्तर पर टॉमकैट पर कस्टम कोड नहीं जोड़ूंगा , क्योंकि यह दूसरों के लिए सेटअप जटिल करेगा और प्रत्येक टॉमकैट अपडेट के साथ यह टूट सकता है।
किसी भी मदद के लिए धन्यवाद!
यहाँ अपने परीक्षण config की server.xml के प्रासंगिक हिस्सा है:
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.CombinedRealm">
<!-- Lockout realm for the DB users -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- PRIMARY: DataSourceRealm with user DB -->
<Realm className="org.apache.catalina.realm.DataSourceRealm"
dataSourceName="jdbc/authority"
userTable="user" userNameCol="username"
userCredCol="password" digest="SHA"
userRoleTable="user_role" roleNameCol="rolename" />
</Realm>
<!-- FALLBACK:
This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
क्रिस्टोफर, उत्कृष्ट उत्तर के लिए बहुत बहुत धन्यवाद! इसके अलावा, मैं उपयोगकर्ताओं की सूची पर एक नज़र डालूंगा (संभवतः मेरे पास सब्सक्राइब करने का समय है, केवल मुझे सभी उपयोगकर्ताओं की सूचियों की सदस्यता लेने के लिए कई बार कई अलग-अलग तकनीकों के साथ करना होगा ...)। लगता है जैसे मैं टॉमकैट कोड को बदलने/विस्तार से बचने में सक्षम नहीं होगा, जब तक कि आधिकारिक कोड निकट भविष्य में मनमाने ढंग से घोंसला वाले स्तर का समर्थन नहीं करेगा। अगर मुझे टॉमकैट कोड बदलना शुरू करना है, तो शायद मैं लॉकआउट रीलम को उपयोगकर्ता नाम बहिष्करण विकल्प के साथ बढ़ा दूंगा - या आपको पता चलेगा कि कुछ भी समान है या नहीं? धन्यवाद! – FelixD
मैंने लॉग इन किया है [इसके लिए बग रिपोर्ट] (https://issues.apache.org/bugzilla/show_bug.cgi?id=54141)। –
ग्रेट, धन्यवाद क्रिस्टोफर! यह खुद करने के लिए खेद है, इस समय थोड़ा तनावपूर्ण ... – FelixD