2011-01-06 4 views
6

私はRed5用のアプリケーションを作成するのに忙しいです。基本/ダイジェスト認証を設定しようとしたときに私が驚いたことを想像してみてください。 何奇妙なとして私を襲ったことは、私が働くと、次のXMLSで正しく認証され実行されているTomcatのインスタンスを持っているということです。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> 

ちょっと、このようになりますで/ confにTomcatの-users.xmlの

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

迷惑なことは、Tomcatのサーブレットコンテナでは正しく設定が認証されますが、red5の変更されたものでは認証を依頼し続けるということです。私は怒ったり、魅力的に働くはずですか?

  1. Red5のバージョン0_9_1
  2. stats.jspですが、両方の サーブレットコンテナでアクセス可能である、唯一の の違いは、ときに入力 のtomcatで正しいパスワードとユーザー名を、あなたがログインしていることで、 であなたはそうではありません。パスワードを尋ねるのは です。

任意のポインタ?何か不足していますか?ここで

は私がログインを試みる瞬間に、受信エラーのスタックトレースです:また

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 

の構成がありますfuther情報:それは右のレルムを使用しているよう

は私には思える:メモリレルム

すぐにTomcatをブートストラップした後

しかし、私は次のエラーで提示しています:

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 

この後、/ WEB-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] 

Tomcatがあるときに本当に私を悩ますことは、私がログインしようとしたときに、出力で見ることができるよう、私はJAASRealm関連の例外を取得し、ということですが、デバッグ出力で読み込み中は、MemoryRealmが必要であることがわかります。私はred5.xmlのどこにどのようにbeanプロパティを指定して、red5に/conf/tomcat-users.xmlの下にあるMemoryRealmを強制的に使用させるのかと疑問に思っていました。

私が今までに投稿した最大の質問のようですが、私は混乱を避けるためにできる限り完全に説明しようとしました。

+0

本当にあなたの質問への回答...しかし、あなたがそこに行くのを助けるかもしれません。予期しないどこかのWEB-INFや別のファイルを探しているようです。あなたがWindows上にいるので... WEB-INFでProcess Monitorに試してみてください。あなたの設定ファイルがアクセスされているか読み取っているかを見ることができなければなりません。また、誤って読み込もうとしているどこにでも失敗した読み取り試行をキャッチすることができます。もちろん、それが瓶からファイルを読み込もうとしているなら、それは役に立たないでしょう。 -Good Luck – sbaker

+0

さて、私はそれをやったし、それはred5ブートストラップ後に解析されるようです。しかし、クライアントのログインがあると、ファイルは再び解析されません。あなたはtomcatの内部を知っていますか?クライアントが認証しようとするたびにファイルを解析するのか、またはアプリケーションがデプロイされたときにファイルを一度解析する必要がありますか? –

+0

こんにちは、私は風刺漫画のエキスパートではありませんが、起動時(または最初のログイン時)にファイルが読み込まれ、各ログイン時には読み込まれません(ファイルが変更された場合、 stacktraceで参照されているWEB-INFディレクトリに対するプロセスモニタの読み込みに失敗しましたか? – sbaker

答えて

2

Red5 0.9では、このノードをtomcat.server beanに追加してみてください。

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

XMLがまだ見つからない場合は(完全パスを試してみてください)、またはレルムプロパティは、私はあなたが1.0にアップグレードすることを示唆している、あなたはそれを設定することはできません。

+0

ありがとう、私は少し時間があるようにすぐに試してみます。 –

+1

1.0にアップデートすると、自動的に問題が解決されたようです –

0

私はこの問題を何度も見てきました。私たちのシステムでは、通常、構成の問題が隠れていました。関連するすべてのパスが設定されているので、すべてのライブラリに正しくアクセスできますか?

また、少し壊れているようなリソースパターンの構文は、その構成設定をすべてのファイルのリストで置き換えることができますか?

+0

「すべてのファイルのリストを含む構成設定」とはどういう意味ですか? タグの下に手動でリソースを追加することをお勧めしますか? –

+0

はい、そうです。 – blueberryfields

+0

問題は、手作業でリソースをロードするか、そのままファイルを残しても何の違いも見つけられないため、まだ開いています。 –

関連する問題