2011-01-06 15 views
6

मैं Red5 के लिए एक ऐप बनाने में व्यस्त हूं। कल्पना कीजिए कि जब मैंने मूल/पाचन प्रमाणीकरण को कॉन्फ़िगर करने की कोशिश की तो मैं आश्चर्यचकित था और मैं नहीं कर सका। क्या मुझे के रूप में अजीब मारा कि मैं एक चल बिल्ला उदाहरण है कि काम करता है और निम्नलिखित xmls साथ सही ढंग से प्रमाणित करता है:red5 पढ़ता है tomcat-users.xml

web.xml (के भाग)

<security-constraint> 
     <web-resource-collection> 
      <web-resource-name>A Protected Page</web-resource-name> 
      <url-pattern>/stats.jsp</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <description/> 
      <role-name>tomcat</role-name> 
     </auth-constraint> 
    </security-constraint> 
    <login-config> 
     <auth-method>DIGEST</auth-method> 
     <realm-name>BLAAAAAAAAAAAAAAAAA</realm-name> 
    </login-config> 
    <security-role> 
     <description/> 
     <role-name>tomcat</role-name> 
    </security-role> 

और एक बिल्ला-users.xml में/conf है कि इस तरह थोड़े दिखता है:

<?xml version="1.0" encoding="UTF-8"?> 
<tomcat-users> 
    <role rolename="tomcat"/> 
    <user username="ide" password="bogus" roles="tomcat"/> 
</tomcat-users> 

कष्टप्रद बात यह है कि कॉन्फ़िगरेशन सही ढंग से टॉमकैट के सर्वलेट कंटेनर पर प्रमाणीकृत करता है, लेकिन लाल 5 के संशोधित व्यक्ति पर, यह केवल प्रमाणीकरण के लिए पूछता रहता है। क्या मैं पागल हो रहा हूं या इसे एक आकर्षण की तरह काम करना चाहिए?

  1. Red5 संस्करण 0_9_1
  2. stats.jsp दोनों सर्वलेट कंटेनर में पहुँचा जा सकता है है, केवल अंतर यह है कि जब आप इनपुट सही पासवर्ड और बिल्ला में उपयोगकर्ता नाम, आप में प्रवेश किया और लाल 5 में आप नहीं हैं, यह सिर्फ आपको पासवर्ड के लिए पूछता है।

कोई बात नहीं? क्या मैं कुछ भूल रहा हूँ?

Caused by: java.io.IOException: Unable to locate a login configuration 
     at com.sun.security.auth.login.ConfigFile.init(ConfigFile.java:250) [na:1.6.0_22] 
     at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:91) [na:1.6.0_22] 
     ... 27 common frames omitted 
[ERROR] [http-127.0.0.1-5080-1] org.apache.catalina.realm.JAASRealm - Cannot find message associated with key jaasRealm.unexpectedError 
java.lang.SecurityException: Unable to locate a login configuration 
     at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:93) [na:1.6.0_22] 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [na:1.6.0_22] 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) [na:1.6.0_22] 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) [na:1.6.0_22] 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513) [na:1.6.0_22] 
     at java.lang.Class.newInstance0(Class.java:355) [na:1.6.0_22] 
     at java.lang.Class.newInstance(Class.java:308) [na:1.6.0_22] 
     at javax.security.auth.login.Configuration$3.run(Configuration.java:247) [na:1.6.0_22] 
     at java.security.AccessController.doPrivileged(Native Method) [na:1.6.0_22] 
     at javax.security.auth.login.Configuration.getConfiguration(Configuration.java:242) [na:1.6.0_22] 
     at javax.security.auth.login.LoginContext$1.run(LoginContext.java:237) [na:1.6.0_22] 
     at java.security.AccessController.doPrivileged(Native Method) [na:1.6.0_22] 
     at javax.security.auth.login.LoginContext.init(LoginContext.java:234) [na:1.6.0_22] 
     at javax.security.auth.login.LoginContext.<init>(LoginContext.java:403) [na:1.6.0_22] 
     at org.apache.catalina.realm.JAASRealm.authenticate(JAASRealm.java:394) [catalina-6.0.24.jar:na] 
     at org.apache.catalina.realm.JAASRealm.authenticate(JAASRealm.java:357) [catalina-6.0.24.jar:na] 
     at org.apache.catalina.authenticator.DigestAuthenticator.findPrincipal(DigestAuthenticator.java:283) [catalina-6.0.24.jar:na] 
     at org.apache.catalina.authenticator.DigestAuthenticator.authenticate(DigestAuthenticator.java:176) [catalina-6.0.24.jar:na] 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:523) [catalina-6.0.24.jar:na] 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [catalina-6.0.24.jar:na] 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [catalina-6.0.24.jar:na] 
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555) [catalina-6.0.24.jar:na] 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [catalina-6.0.24.jar:na] 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) [catalina-6.0.24.jar:na] 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) [tomcat-coyote-6.0.24.jar:na] 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) [tomcat-coyote-6.0.24.jar:na] 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) [tomcat-coyote-6.0.24.jar:na] 
     at java.lang.Thread.run(Thread.java:662) [na:1.6.0_22] 
Caused by: java.io.IOException: Unable to locate a login configuration 
     at com.sun.security.auth.login.ConfigFile.init(ConfigFile.java:250) [na:1.6.0_22] 
     at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:91) [na:1.6.0_22] 
     ... 27 common frames omitted 

इसके अलावा, यहां red5-web.properties के विन्यास

webapp.contextPath=/project 

भी है:

यहाँ त्रुटि मैं पल में प्राप्त की एक स्टैक ट्रेस मैं लॉगिन कोशिश है आगे की जानकारी:

मुझे लगता है जैसे कि यह सही दायरे उपयोग कर रहा है: MemoryRealm

[INFO] [main] org.red5.server.tomcat.TomcatLoader - Setting connector: org.apache.catalina.connector.Connector 
[INFO] [main] org.red5.server.tomcat.TomcatLoader - Address to bind: /127.0.0.1:5080 
[INFO] [main] org.red5.server.tomcat.TomcatLoader - Setting realm: org.apache.catalina.realm.MemoryRealm 
[INFO] [main] org.red5.server.tomcat.TomcatLoader - Loading tomcat context 
[INFO] [main] org.red5.server.tomcat.TomcatLoader - Server root: C:/Program Files/Red5 
[INFO] [main] org.red5.server.tomcat.TomcatLoader - Config root: C:/Program Files/Red5/conf 
[INFO] [main] org.red5.server.tomcat.TomcatLoader - Application root: C:/Program Files/Red5/webapps 
[INFO] [main] org.red5.server.tomcat.TomcatLoader - Starting Tomcat servlet engine 
[INFO] [main] org.apache.catalina.startup.Embedded - Starting tomcat server 
[INFO] [main] org.apache.catalina.core.StandardEngine - Starting Servlet Engine: Apache Tomcat/6.0.26 

हालांकि, तुरंत बिलाव bootstraping के बाद, मुझे निम्न त्रुटि के साथ प्रस्तुत कर रहा हूँ:

Exception in thread "Launcher:/administration" org.springframework.beans.factory.BeanDefinitionStoreException: Could not resolve bean definition resource pattern [/WEB-INF/red5-*.xml]; nested exception is java.io.FileNotFoundException: ServletContext resource [/WEB-INF/] cannot be resolved to URL because it does not exist 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:190) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149) 
     at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124) 
     at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93) 
     at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) 
     at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:458) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:388) 
     at org.red5.server.tomcat.TomcatLoader$1.run(TomcatLoader.java:594) 
Caused by: java.io.FileNotFoundException: ServletContext resource [/WEB-INF/] cannot be resolved to URL because it does not exist 
     at org.springframework.web.context.support.ServletContextResource.getURL(ServletContextResource.java:132) 
     at org.springframework.core.io.support.PathMatchingResourcePatternResolver.isJarResource(PathMatchingResourcePatternResolver.java:414) 
     at org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(PathMatchingResourcePatternResolver.java:343) 
     at org.springframework.core.io.support.PathMatchingResourcePatternResolver.getResources(PathMatchingResourcePatternResolver.java:282) 
     at org.springframework.context.support.AbstractApplicationContext.getResources(AbstractApplicationContext.java:1156) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:177) 
     ... 7 more 

यह त्रुटि, थोड़े अजीब है क्योंकि इस के बाद ऐसा लगता है कि/वेब-INF/के बाकी के द्वारा पाया जाता है

[INFO] [Launcher:/SOSample] org.springframework.beans.factory.config.PropertyPlaceholderConfigurer - Loading properties file from ServletContext resource [/WEB-INF/red5-web.properties] 
[INFO] [Launcher:/installer] org.springframework.beans.factory.config.PropertyPlaceholderConfigurer - Loading properties file from ServletContext resource [/WEB-INF/red5-web.properties] 
[INFO] [Launcher:/] org.springframework.beans.factory.config.PropertyPlaceholderConfigurer - Loading properties file from ServletContext resource [/WEB-INF/red5-web.properties] 
[INFO] [Launcher:/LiveMedia] org.springframework.beans.factory.config.PropertyPlaceholderConfigurer - Loading properties file from ServletContext resource [/WEB-INF/red5-web.properties] 

क्या वास्तव में मुझे गुस्सा दिलाती है कि, जैसा कि आप उत्पादन में देख सकते हैं, जब मैं प्रवेश करने की कोशिश, मैं एक JAASRealm संबंधी अपवाद मिलता है, लेकिन डिबग आउटपुट में बिलाव है जब है: निम्नलिखित उत्पादन से कार्यक्रम लोड हो रहा है, यह मुझे स्पष्ट है कि यह एक मेमोरीरेम की अपेक्षा करता है। मैं सोच रहा था कि red5.xml में कहां और कैसे करें, मुझे बीन गुणों को निर्दिष्ट करना चाहिए जैसे कि मैं Memory5 का उपयोग करने के लिए red5 को मजबूर करता हूं जो /conf/tomcat-users.xml के अंतर्गत है, क्योंकि यह निश्चित रूप से ऐसा नहीं करता है।

ऐसा लगता है कि मैंने अब तक का सबसे बड़ा सवाल पोस्ट किया है, लेकिन मैंने इसे भ्रम से बचने के लिए जितना संभव हो उतना समझाया।

+0

वास्तव में आपके प्रश्न का उत्तर नहीं है ... लेकिन आपको वहां पहुंचने में मदद कर सकता है। ऐसा लगता है कि यह वेब-आईएनएफ या किसी अन्य फ़ाइल को कहीं अप्रत्याशित रूप से ढूंढ रहा है। चूंकि आप विंडोज़ पर हैं ... प्रोसेस मॉनिटर को वेब-आईएनएफ पर कोशिश करने और फ़िल्टर करने के लिए देना चाहिए। यह देखने में सक्षम होना चाहिए कि आपकी कॉन्फ़िगरेशन फ़ाइलों को एक्सेस/पढ़ा जा रहा है या नहीं, किसी भी असफल पढ़ने के प्रयासों को पकड़ने में सक्षम होना चाहिए, जहां कहीं भी यह गलत तरीके से पढ़ने की कोशिश कर रहा हो। बेशक यह मदद नहीं करेगा अगर यह एक जार से फ़ाइलों को पढ़ने की कोशिश कर रहा है। -गुड लक – sbaker

+0

ठीक है मैंने ऐसा किया और ऐसा लगता है कि यह लाल 5 बूटस्ट्रैप्स के बाद पार्स हो जाता है। हालांकि, जब मेरे पास क्लाइंट लॉगिन होता है, तो फ़ाइलों को फिर से पार्स नहीं किया जाता है। क्या आप टोमकैट के आंतरिक जानते हैं? जब भी कोई क्लाइंट प्रमाणीकृत करने का प्रयास करता है, तो फ़ाइल को प्रत्येक बार पार्स करना चाहिए, या जब एप्लिकेशन को तैनात किया जाता है, तो फ़ाइल को एक बार पार्स किया जाना चाहिए? –

+0

हाय, मैं टॉमकैट विशेषज्ञ नहीं हूं - लेकिन मैं उम्मीद करता हूं कि फ़ाइलों को शुरुआत में बूट (या पहले लॉगिन) पर पढ़ा जाए और प्रत्येक लॉगिन प्रयास पर नहीं (केवल फ़ाइल को बदल दिया गया हो तो संभवतः फिर से पढ़ा जा रहा है)। क्या आपने स्टैकट्रैस में संदर्भित वेब-आईएनएफ निर्देशिका के लिए प्रोसेस मॉनिटर में किसी भी असफल पढ़ने के प्रयासों को देखा था? – sbaker

उत्तर

2

Red5 0.9 के लिए, इस नोड को अपने tomcat.server बीन में जोड़ने का प्रयास करें।

<property name="realm"> 
    <bean class="org.apache.catalina.realm.MemoryRealm" lazy-init="true"> 
     <property name="pathname" value="conf/tomcat-users.xml" /> 
    </bean> 
</property> 

तो एक्सएमएल अभी भी नहीं मिला है (एक पूर्ण पथ की कोशिश) या दायरे संपत्ति आप इसे स्थापित करने के लिए अनुमति नहीं है, मैं सुझाव है कि आप 1.0 में अपग्रेड करें।

+0

धन्यवाद, जल्द ही प्रयास करें क्योंकि मेरे पास थोड़ा समय है। –

+1

1.0 को अपडेट करना समस्या को स्वचालित रूप से हल करना प्रतीत होता था –

0

मैंने इस समस्या को कई बार देखा है, और, हमारे सिस्टम पर, यह आमतौर पर कॉन्फ़िगरेशन समस्या को छुपा रहा था। क्या आप सुनिश्चित हैं कि सभी प्रासंगिक पथ सेट हैं, ताकि आपके सभी पुस्तकालयों को उचित रूप से एक्सेस किया जा सके?

इसके अलावा, संसाधन पैटर्न वाक्यविन्यास, जो थोड़ा टूटा हुआ लगता है, क्या आप उस कॉन्फ़िगरेशन सेटिंग को सभी फ़ाइलों की सूची के साथ प्रतिस्थापित कर सकते हैं?

+0

"फाइलों की सूची के साथ कॉन्फ़िगरेशन सेटिंग" के बजाय आपका क्या मतलब है? क्या आप टैग के तहत मैन्युअल रूप से संसाधन जोड़ने का सुझाव देते हैं? –

+0

हाँ, यह सही है। – blueberryfields

+0

समस्या अभी भी इस तरह से खुली है क्योंकि मुझे कोई फर्क नहीं पड़ता कि मैं मैन्युअल रूप से संसाधन लोड करता हूं या फ़ाइल को छोड़ देता हूं। –

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