2010-12-09 74 views
7

我想在Tomcat的6.0,以獲得上下文特定的安全領域,但是當我啓動Tomcat我得到以下錯誤:配置上下文特定的Tomcat安全領域

09-Dec-2010 16:12:40 org.apache.catalina.startup.ContextConfig validateSecurityRoles 
INFO: WARNING: Security role name myrole used in an <auth-constraint> without being defined in a <security-role> 

我已經創建瞭如下的context.xml文件:

<Context debug="0" reloadable="true"> 

    <Resource name="MyUserDatabase" 
      type="org.apache.catalina.UserDatabase" 
      description="User database that can be updated and saved" 
      factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
      pathname="conf/my-users.xml" /> 

    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
     resourceName="MyUserDatabase"/> 

</Context> 

創建的文件:我-users.xml中我已經放置在WEB-INF/conf目錄包含以下內容:

<tomcat-users> 
    <role rolename="myrole"/> 
    <user username="test" password="changeit" roles="myrole" /> 
</tomcat-users> 

添加以下行到我的web.xml文件:

<web-app ...> 
    ... 
    <security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Entire Application</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>myrole</role-name> 
    </auth-constraint> 
    </security-constraint> 

    <login-config> 
    <auth-method>BASIC</auth-method> 
    </login-config> 
    ... 
</web-app> 

但似乎得到任何地方,我把的conf /我-users.xml中的錯誤。我必須在路徑名中指定一個明確的PATH還是相對於某個地方?理想情況下,我希望將其打包爲我的WAR文件的一部分。

任何想法?

回答

4

我相信你需要在你的web.xml

<security-role> 
    <role-name>myrole</role-name> 
</security-role> 

下面以定義角色。另外,我認爲您需要參考login-config中的領域,或參考登錄配置中的領域。

+0

stjohnroe嗨,這肯定幫助,並清除了啓動錯誤,但它似乎Tomcat是否完全無視我的context.xml文件。如果我添加<角色角色名= 「myrole」/ > <用戶的用戶名= 「測試」 密碼= 「的changeit」 角色= 「myrole」/ >到的catalina.home $/conf資料/ Tomcat的users.xml中,然後它的工作原理,但我想要一個自定義的tomcat用戶文件。任何想法還是不可能有兩個領域? – 2010-12-09 18:03:54

0

看一看的tomcat-users.xml文件在你的Tomcat配置目錄定義安全角色爲你所需要的一個例子。

另外,請參考以下article指導。