用Tomcat的SSO实现2012-01-28 blogjava 江苏520目标:用户Login一次之后,可以访问同一Server上的不同Webapp, 具体实现上采用Tomcat的Single Sign-On实现. 主要分为下面几个步骤:修改Tomcat conf/server.xml 打开SSO支持
<Host> 节点下增加一个Value节点<Valve className="org.apache.catalina.authenticator.SingleSignOn"debug="0" requireReauthentication="false"/></Host>
container认证realm: user、role、server.xml的<Realm...>设置.tomcat的认证机制有2个要素: user 和 role.user 是区别一个个用户的唯一识别了。role 就是一些抽象的权限级别,比如“admin”、“manager”、“member”、“guest”等等,都是可以自己定义的.一个user可以拥有多种role.“可是tomcat怎么去拿到我的user/role信息呢?我的这些数据都在数据库里阿?” 可以在tomcat的server.xml里用 <Realm> tag来读取这些信息,并且tomcat提供了3、4种现成的Realm实现,其中有从文件里读的,有从JDBC读的,有从DataSource读的,也有从LDAP读的。具体Realm的写法,和提供的几种Realm的配置方法,可以参考tomcat自己的文档,在此不作细述。 (把tomcat自带的webapp: tomcat-docs.war 展开,看里面的 config/realm.html) 如果连这些现成的配置都不能满足你的要求的话,那也可以考虑自己写一个Realm的实现类来满足具体要求。下面举一个JDBC的Realm的配置例子看一下:
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"driverName="your.jdbc.driver.here"connectionURL="your.jdbc.url.here"connectionName="test"connectionPassword="test"userTable="users"userNameCol="user_name"userCredCol="user_pass"userRoleTable="user_roles"roleNameCol="role_name" />
webapp使用SSO:告诉tomcat这个webapp要通过container的认证