揭秘DNS后台文件:DNS系列之五
2009-09-25 14:24
225 查看
JBoss Web 是 JBoss AS 服务器使用的 Servet contaner, 其实它是一个 Tomcat 的运行时,然后集成到了 JBoss AS 服务器中。 所以这里描述的安全性的实现同样适合于 Tomcat。
Servlet 容器启动的时候, 会针对 HTTP 协议启动一系列的 Acceptor 线程,当一个 HTTP 的请求发送到 Servet 容器的时候, 其中一个 Acceptor 线程会再次启动一个新的线程处理该请求。 在对该请求做了一些列的 pre/post 处理后, tomcat 会调用:
方法。
该方法会调用容器的 pipeline 的第一个 Valve 的 invoke() 方法, 基本上每个 valve 的实现都会考虑调用:
这点和 HttpFilter 类似。
而 org.apache.catalina.authenticator.AuthenticatorBase 就是其中一个 valve,我们先看下这个 valve 都作了什么,然后看看它是如何加进当前的 pipeline 的。
首先它会检查当前请求里是否有 principal, 并且该 principal 是否有权限访问当前正在访问的资源, 如果没有, 那么会调用 authenticate 方法进行登录, 如果登录成功,调用 next valve 的 invoke 方法。
那这个 valve 是怎么加到当前的 pipeline 的呢? 当一个 war 部署的时候, 容器会分析 web.xml, 如果web.xml 里有 security-constraint 定义, 那么它会根据当前 login-config 里定义的 auth-method 为其分配一个 Authenticator。 它同时也是一个 Valve,其中 auth-method 一般取值为:
BASIC
FORM
CLIENT-CERT
DIGEST
NONE
除此以外, 用户可以自定义 Authenticator 的 Valve,从而实现更多的 auth-method。以 jboss 下配置 SPNEGO authenticator 为例, 在 jboss-web.xml 里加上如下定义:
该 Authenticator 会忽略 auth-method 的定义。 JBoss web 就会在该 war 部署的时候,由容器直接把这个 Authenticator 加入到 pipeline。
Servlet 容器启动的时候, 会针对 HTTP 协议启动一系列的 Acceptor 线程,当一个 HTTP 的请求发送到 Servet 容器的时候, 其中一个 Acceptor 线程会再次启动一个新的线程处理该请求。 在对该请求做了一些列的 pre/post 处理后, tomcat 会调用:
connector.getContainer().getPipeline().getFirst().invoke(request, response);
方法。
该方法会调用容器的 pipeline 的第一个 Valve 的 invoke() 方法, 基本上每个 valve 的实现都会考虑调用:
getNext().invoke(request, response);
这点和 HttpFilter 类似。
而 org.apache.catalina.authenticator.AuthenticatorBase 就是其中一个 valve,我们先看下这个 valve 都作了什么,然后看看它是如何加进当前的 pipeline 的。
首先它会检查当前请求里是否有 principal, 并且该 principal 是否有权限访问当前正在访问的资源, 如果没有, 那么会调用 authenticate 方法进行登录, 如果登录成功,调用 next valve 的 invoke 方法。
那这个 valve 是怎么加到当前的 pipeline 的呢? 当一个 war 部署的时候, 容器会分析 web.xml, 如果web.xml 里有 security-constraint 定义, 那么它会根据当前 login-config 里定义的 auth-method 为其分配一个 Authenticator。 它同时也是一个 Valve,其中 auth-method 一般取值为:
BASIC
FORM
CLIENT-CERT
DIGEST
NONE
除此以外, 用户可以自定义 Authenticator 的 Valve,从而实现更多的 auth-method。以 jboss 下配置 SPNEGO authenticator 为例, 在 jboss-web.xml 里加上如下定义:
<valve> <class-name>org.jboss.security.negotiation.NegotiationAuthenticator</class-name> </valve>
该 Authenticator 会忽略 auth-method 的定义。 JBoss web 就会在该 war 部署的时候,由容器直接把这个 Authenticator 加入到 pipeline。
相关文章推荐
- 揭秘DNS后台文件:DNS系列之五
- 揭秘DNS后台文件:DNS系列之五
- 揭秘DNS后台文件:DNS系列之五
- 揭秘DNS后台文件:DNS系列之五
- 揭秘DNS后台文件
- SpringMVC系列(十一)把后台返回的数据转换成json、文件下载、文件上传
- 安卓反编译揭秘(爱加密系列教程十一)伪加密APK文件被破坏
- ios开发系列-后台文件
- 深入浅出DNS系列(十一)- 压力测试工具与根服务器提示文件
- DNS扫盲系列之五:域名配置ZONE文件
- 探索Windows命令行系列(4):通过命令操作文件和文件夹
- android上如何实现后台日志记录并写文件到sd卡
- Enterprise Library 3.1 - 揭秘系列(2) - Encrypting Configuration Data
- DM6437 dsp系列之启动过程全析(2)—AIS文件解析
- 關于在WIN32調用一些Zw系列的文件操作函數.
- 2.2Bind建立配置文件和实体的映射「深入浅出ASP.NET Core系列」
- Android官方开发文档Training系列课程中文版:分享文件之请求一个共享文件
- [C# 网络编程系列]专题十一:实现一个基于FTP协议的程序——文件上传下载器
- 34个漂亮的应用程序后台管理界面(系列一)
- Android官方开发文档Training系列课程中文版:通过NFC共享文件之发送文件到另一台设备