请bang大哥指点一下JBoss的jaas授权过程!

jaas包括验证和授权两个过程
验证就是判断用户名密码是否正确
String username= request.getParameter("username");
String password= request.getParameter("password");
try{
SecurityAssociationHandler handler = new SecurityAssociationHandler();
SimplePrincipal user = new SimplePrincipal(username);
handler.setSecurityInfo(user, password.toCharArray());
LoginContext loginContext = new LoginContext("jaas_example",(CallbackHandler)handler);
loginContext.login();
Subject subject = loginContext.getSubject();
如果没有错误就表示验证通过

可是授权就比较麻烦了
本来是通过
Subject.doAs(subject, new PrivilegedAction(){public Object run(){}}); 去授权的,敏感的代码放到run()方法里

但是web模型下,如果保护的是url那么要如何进行授权呢,还有就是如果知道用户刚才请求的url呢

也就是说action="j_security_check" 这个j_security_check里的代码是怎么处理的,我找不到这个Servlet?

问这样的问题是因为:我想在第一次登陆的时候执行一些其他的初始化信息,并且放到用户session里, 如果用jboss自带的机制就没法实现,所以小弟想做一个类似j_security_check的Servlet,

请bang大哥帮忙,谢谢啦

老大,你给的页面和书上的一样,我都看过了,
可是还是不知道具体是怎么执行授权过程的,
例如怎么获取用户请求的地址,和受保护的地址进行比对,判断需要的角色等等
例如checkPermission(String action)

关键是怎么获取用户刚才的请求地址的(因为这个请求地址被保护所以才出现验证登陆框)

>关键是怎么获取用户刚才的请求地址的
从request.getXXXX方法中获得

老大,你说的request.getXXX()是行不通的,我看了服务器的源代码,在拥护请求一个被保护的资源的时候,请求的地址和后面验证以后的PRINCIPAL等都是保存在服务器自己的session,但是它没有对外提供一个接口,所以在Servlet级别是没有办法获取那些信息的
例如
SavedRequest sreq = (SavedRequest)session.getNote("org.apache.catalina.authenticator.REQUEST");

具体的老大可以看看FormAuthenticator这个类的内容