知识大全 用Tomcat的SSO实现

Posted

篇首语:我认为知识是一切能力中最强的力量。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用Tomcat的SSO实现相关的知识,希望对你有一定的参考价值。

用Tomcat的SSO实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  目标:用户Login一次之后 可以访问同一Server上的不同Webapp 具体实现上采用Tomcat的Single Sign On实现 主要分为下面几个步骤:

  修改Tomcat conf/server xml 打开SSO支持

  <Host> 节点下增加一个Value节点

  <Valve className= apache catalina authenticator SingleSignOn

  debug= requireReauthentication= false />

  </Host>container认证realm user role server xml的<Realm >设置

  tomcat的认证机制有 个要素 user 和 role

  user 是区别一个个用户的唯一识别了

  role 就是一些抽象的权限级别 比如 admin manager member guest 等等 都是可以自己定义的 一个user可以拥有多种role

   可是tomcat怎么去拿到我的user/role信息呢?我的这些数据都在数据库里阿? 可以在tomcat的server xml里用 <Realm> tag来读取这些信息 并且tomcat提供了 种现成的Realm实现 其中有从文件里读的 有从JDBC读的 有从DataSource读的 也有从LDAP读的 具体Realm的写法 和提供的几种Realm的配置方法 可以参考tomcat自己的文档 在此不作细述 (把tomcat自带的webapp: tomcat docs war 展开 看里面的 config/l) 如果连这些现成的配置都不能满足你的要求的话 那也可以考虑自己写一个Realm的实现类来满足具体要求 下面举一个JDBC的Realm的配置例子看一下

  <Realm  className= apache catalina realm JDBCRealm   debug=

  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的认证

  目标:用户Login一次之后 可以访问同一Server上的不同Webapp 具体实现上采用Tomcat的Single Sign On实现 主要分为下面几个步骤:

  修改Tomcat conf/server xml 打开SSO支持

  <Host> 节点下增加一个Value节点

  <Valve className= apache catalina authenticator SingleSignOn

  debug= requireReauthentication= false />

  </Host>container认证realm user role server xml的<Realm >设置

  tomcat的认证机制有 个要素 user 和 role

  user 是区别一个个用户的唯一识别了

  role 就是一些抽象的权限级别 比如 admin manager member guest 等等 都是可以自己定义的 一个user可以拥有多种role

   可是tomcat怎么去拿到我的user/role信息呢?我的这些数据都在数据库里阿? 可以在tomcat的server xml里用 <Realm> tag来读取这些信息 并且tomcat提供了 种现成的Realm实现 其中有从文件里读的 有从JDBC读的 有从DataSource读的 也有从LDAP读的 具体Realm的写法 和提供的几种Realm的配置方法 可以参考tomcat自己的文档 在此不作细述 (把tomcat自带的webapp: tomcat docs war 展开 看里面的 config/l) 如果连这些现成的配置都不能满足你的要求的话 那也可以考虑自己写一个Realm的实现类来满足具体要求 下面举一个JDBC的Realm的配置例子看一下

  <Realm  className= apache catalina realm JDBCRealm   debug=

  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的认证

  具体做法 在web xml里面加上如下的配置

  <security constraint>

  <web resource collection>

  <web resource name> bt BT下载 </web resource name>

  <url pattern>/*</url pattern>

  </web resource collection>

  <auth constraint>

  <! role name 指定哪个role可以访问 可以为多个role

  <role name>intrauser</role name>

  </auth constraint>

  </security constraint>选择一种认证方法

  在web xml里面加上如下的配置

  <login config>

  <auth method>BASIC</auth method>

  <realm name>Intra Web Application</realm name>

  </login config>

  <security role>

  <description>The role that is required to access intrasites</description>

  <role name>intrauser</role name>

  </security role>这里有 个要点

  auth method

  举例为了简单用了最基本的一种BASIC 若使用BASIC方式 当你去访问受保护认证的资源时 浏览器会弹出一个小窗口让你输入用户名和密码 (就像我们访问ioffice时 第一次弹出来的那个认证窗口)其他还有几种认证方式如 FORM DIGEST CLIENT CERT 其中FORM是可以自己写login画面的 当然的form内容有些规定(要符合j ee和container的要求嘛) DIGEST是一种加密的传输 而CLIENT CERT没有查过 有兴趣可以去查一下

  realm name

  这个realm name是这个webapp的认证realm名 注意几个处于同一SSO下的webapp 他们的realm name要设成一样的值 如果不设成一样 那么换一个webapp就要重新认证一次 达不到SSO的效果

  如何取得当前的User信息

  原本都习惯在login以后 把一些login用户信息放到session里面的 现在认证都交给container去做了 我们的webapp怎么拿到login用户信息啊? 确实 现在我们的webapp能做的 只有从request里面拿到login用户的userid了

  String userid = request gerRemoteUser();

  以上是在一个Tomcat Container上的SSO实现

cha138/Article/program/Java/ky/201311/27903

相关参考

知识大全 Tomcat配置成https方式访问(用单向认证)

Tomcat配置成https方式访问(用单向认证)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 用GlassFish v2替换Tomcat 5.x[2]

用GlassFishv2替换Tomcat5.x[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 用GlassFish v2替换Tomcat 5.x[1]

用GlassFishv2替换Tomcat5.x[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 用Eclipse的log解决添加Tomcat Server失败问题

用Eclipse的log解决添加TomcatServer失败问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Tomcat 6 环境变量

Tomcat6环境变量  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以前一直用tomcat是安

知识大全 Myeclipse启动Tomcat出错

Myeclipse启动Tomcat出错  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  向来用to

知识大全 MC4J远程监测Tomcat集群-JMX助Tomcat2(图)

MC4J远程监测Tomcat集群-JMX助Tomcat2(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 MC4J远程监测Tomcat集群-JMX助Tomcat1(图)

MC4J远程监测Tomcat集群-JMX助Tomcat1(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 tomcat下连接池的配置

  一  把数据库JDBC驱动拷贝到  %TOMCAT_HOME%/mon/lib  或  %TOMCAT_HOME%/webapps/yourweb/WEBINF/lib下;  修改tomcat安装

知识大全 tomcat启动不了

  放TOMCAT的服务端许多人使用  本来启动一直正常  某日突然  startup启动TOMCAT一闪而过  通过cmd启动矣是如此启动失败  最后通过改shutdownport解决问题  <