解决方案 »

  1.   

    研究过一段时间的sso,但研究得不深,也没用过cas,你的映射表的方案我认为是对的。但是,你的图里都搞成这个样子了,还不如统一用户名算了。坐等楼下大神见解
      

  2.   


    同顶,同问。我想 不可能要把两个应用的所有数据都映射到一张表里面。。可不可以这样,web1下面的A表,web2下面的B表在登录server端的时候能够拿到回传地址,进行判断是哪个应用,就去调用哪个bean,判断数据库用户名和密码如何?或者你同步两张web1的用户表t1和web2的用户表t2到一张t3表里面server端就去读这个t3表!!但是这又涉及一个更改密码同步的事情
      

  3.   

    额 今天我从网上发现,你定义两个bean 就可以达到,cas会自动先用bean1去查找t1表里的用户名和密码是否正确,不正确去搜bean2里面的配置信息以此类推只要有一个验证通过了就ok了。
      

  4.   

    看下这个帖子 :http://linliangyi2007.iteye.com/blog/165313里面有写到怎么用代码去实现楼上所说的一个list验证器。。
    我们发现authenticationHandlers属性是一个list,在这个list中可以配置多个AuthenticationHandlers。这些AuthenticationHandlers形成了一个验证器链,所有提交给CAS的Credentials信息将通过这个验证器链的链式过滤,只要这链中有一个验证器通过了对Credentials的验证,就认为这个Credentials是合法的。这样的设计使得我们可以很轻松的整合不同验证体系的已有应用到同一个CAS上,比如:A验证器负责校验alpha系统提交的Credentials,它是基于LDAP服务器的;B验证器负责校验beta系统提交的Credentials,它是一个传统的RDB用户表认证;C验证器负责校验gamma系统提交的基于RSA证书加密的Credentials。3种完全不同的用户身份认证通过配置就可以统一在同一个CAS服务内,很好很强大,不是吗!! 
      

  5.   

    楼上的验证器链还是无法解决不同应用中用户名不同的情况吧,假设用户在应用A中的用户名是userA,在应用B中的用户名是userB,首先通过应用A登录,cas返回的用户名是userA,紧接着登录应用B时,由于TGC没有过期,仍然返回用户名userA,这个用户名对应用B来说没有意义
      

  6.   

    cas单独占用一个用户表,与其他系统间的数据做好同步不就可以了吗、?我们之前项目就是这么做的!
      

  7.   


    朋友 你们的CAS用户表是怎么设计多个应用,多套用户名、密码的 ?楼上的验证器链还是无法解决不同应用中用户名不同的情况吧,假设用户在应用A中的用户名是userA,在应用B中的用户名是userB,首先通过应用A登录,cas返回的用户名是userA,紧接着登录应用B时,由于TGC没有过期,仍然返回用户名userA,这个用户名对应用B来说没有意义,这个问题 你们是怎么设计搞定的哈 ?