在我们的web应用的web.xml中,如果有<security-constraint>标签,那么恭喜你,你正在使用tomcat的realm接口,通过容器来管理你的安全验证。
在上一篇博文中,对于自己的tomcat admin中也使用到了UserDatabaseRealm这个Realm的实现。
具体使用如下:
server.xml中的
<GlobalNamingResources> 标签下,包含了这样一个resource:
<Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml"/>
其中描述了conf/tomcat-users.xml这个文件下,有定义tomcat的MemoryUserDatabase的实例的信息。
并在Engine标签下,应用了这个resource:
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
讲此资源配置给UserDatabaseRealm,这样,这个Engine下的所有host都可以使用这个realm了。
回到应用的web.xml下,配置:
<security-constraint>
<display-name>Tomcat Server Configuration Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<!-- Define the context-relative URL(s) to be protected -->
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.do</url-pattern>
<url-pattern>*.html</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- Anyone with one of the listed roles may access this area -->
<role-name>elite-tomcat-admin-gui</role-name>
<role-name>elite-tomcat-admin</role-name>
</auth-constraint>
</security-constraint>
<!-- Login configuration uses form-based authentication -->
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Tomcat Server Configuration Form-Based Authentication Area</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
<!-- Security roles referenced by this web application -->
<security-role>
<description>
The role that is required to log in to the Administration Application
</description>
<role-name>elite-tomcat-admin-gui</role-name>
</security-role>
<security-role>
<description>
Deprecated role name, that provides the same access as the "admin-gui" role.
</description>
<role-name>elite-tomcat-admin</role-name>
</security-role>
此处定义了那些url-pattern需要验证,什么role是可以验证通过的。
然后定义了验证方式,使用了FORM方式的验证:
login.jsp中大致如下:
<form method="POST" action='<%= response.encodeURL("j_security_check") %>' name="loginForm">
<input type="text" name="j_username" size="16" id="username"/>
<input type="password" name="j_password" size="16" id="password"/>
</form>
在页面中又这样的form和j_username,j_password的时候,就会去使用到realm的验证了。
最后还定义了security-role,与tomcat-user.xml中的role定义相互对应。
tomcat还有许多realm的标准实现,在http://tomcat.apache.org/tomcat-5.5-doc/realm-howto.html
都可以看到相关介绍与示例,如果需要容器来管理应用的安全认证,可以以参考使用。
分享到:
相关推荐
此外,应配置好`server.xml`中的`UserDatabaseRealm`或使用其他身份验证方法来增强安全性。 总结来说,Apache Tomcat 8.5.69是用于Windows x64系统的强大Java Web服务器,能够支持各种Web应用的开发和部署。通过...
通常,Tomcat使用`MemoryRealm`或`UserDatabaseRealm`,但为了使用JAAS,你需要改为`JAASRealm`。例如: ```xml ``` 其中,`appName`是你的应用程序名,`userClassNames`是实现`javax.security.auth.spi....
Tomcat提供了多种内置的Realm,如JDBCRealm用于从关系数据库中获取认证信息,DataSourceRealm通过JNDI数据源访问数据库,UserDatabaseRealm使用XML文件(conf/tomcat-users.xml)存储信息,JNDIRealm通过JNDI访问...
配置`server.xml`中的 Realm 组件,如`UserDatabaseRealm`,来实现基于角色的访问控制。确保只有授权用户才能访问敏感资源,并定期更新`tomcat-users.xml`中的用户和角色信息。 6. **日志管理** 通过修改`logging...
`Realm`接口和它的实现(如`MemoryRealm`、`UserDatabaseRealm`)负责身份验证,`SecurityConstraint`和`Role`用于定义权限。 7. **生命周期管理**:TomCat API中的组件遵循一套标准的生命周期管理,包括初始化、...
UserDatabaseRealm从XML文件中加载用户信息,如conf/tomcat-users.xml。 5.4、配置基于 JDBCRealm 的安全域 JDBCRealm从数据库中获取用户信息,需配置数据源和SQL查询。 5.5、配置基于 DataSourceRealm 的安全域 ...
UserDatabaseRealm to authenticate users --> type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users....
总结,管理Linux上的Tomcat 6用户涉及到编辑`server.xml`配置`UserDatabaseRealm`,创建并编辑`tomcat-users.xml`来定义用户和角色,以及理解这些配置如何影响服务器的权限控制。通过熟练掌握这些步骤,你可以有效地...
UserDatabaseRealm to authenticate users --> type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users....
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> ``` 这样,用户就可以通过`http://localhost:8888/test/aaa.html`来访问位于`F:\Root\test\aaa.html`的...
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> ``` 接着,在`/var/lib/tomcat7/conf/tomcat-users.xml`中添加用户和角色: ```xml <tomcat-users> ,manager-...
“org.apache.catalina.realm.UserDatabaseRealm” resourceName=“UserDatabase”/> 把该片断命名为“MyWebApp.xml”,然后拷贝到CATALINA_BASE/webapps目录下。 这种context片断提供了一种便利的方法来部署web...
1. **Realm**: Realm负责验证用户身份,如基于文件的`UserDatabaseRealm`或数据库的`JDBCRealm`。 2. **Role与Permission**:定义角色和权限,通过`<security-constraint>`、`<role-name>`、`<auth-constraint>`...
Realm负责认证和授权,例如,MemoryRealm使用内存中的用户和角色信息,UserDatabaseRealm从XML文件加载用户信息。 理解并掌握server.xml的配置对于优化Tomcat的性能、扩展功能以及解决部署问题至关重要。开发者...
### Tomcat配置技巧精华详解分析 #### 一、Tomcat简介与重要性 Apache Tomcat是一款开源的Servlet容器,主要用于部署Java Web应用。它支持Java Servlet、JavaServer Pages (JSP)技术以及部分Web功能,如HTTP/HTTPS...
7. **UserDatabaseRealm.start()** - 初始化用户数据库认证。 8. **StandardPipeline:start()** - 启动管道处理。 9. **StandardContext:start()** - 启动上下文环境,部署Web应用。 在这个过程中,会涉及到多个...
-- Editable user database that can also be used by UserDatabaseRealm to authenticate users --> type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" ...
- **UserDatabase**:配置用户数据库资源,可以被`UserDatabaseRealm`使用来进行用户认证。 ```xml ...
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> rmiServerHost="127.0.0.1" rmiServerPort="1099" rmiRegistryPort="1099" serverSocketFactory="org....
UserDatabaseRealm to authenticate users --> type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users....