Acegi工作流程
任何一个安全系统都包括authentication和authorization两部分,Acegi相同。
第一部分:authentication
1 acegi通过AuthenticationProcessingFilter拦截login请求获取Principal和Credential信息(通俗一点就是用户名和密码 ;-));
2 验证用户名密码,由这个Filter调用认证管理器AuthenticatiomManager进行验证。
AuthenticatiomManager本身并不具备验证的功能,它相当与是一个验证控制器,由它来管理验证的过程及方式。AuthenticatiomManager是通过调用provider来进行验证的,一个manager中可以具有多个provider,但只要有一个provider验证通过,manager就认为验证成功。
这部分要明白三点:一,provider是可以配置进去的,因为acegi是基于spring的;二是AuthenticatiomManager是可以被重写的,你可以将manager改成你自己希望的控制器;三,好好利用event,这是标准的observer模式。acegi中的设计模式研究将在以后的贴子中讨论。
3 provider进行验证。
provider是真正的验证模块,并且决定了验证的模式。provider目前acegi提供了dao、jaas,cas,x509,ldap等几种验证方式,这些验证方式的具体内容可以查阅acegi的文档。provider验证通过后将Authentication对象返回。
4 AuthenticationProcessingFilter将对象保存