`

使用Tomcat 的SSO

    博客分类:
  • java
阅读更多
目标:用户Login一次之后,可以访问同一Server上的不同Webapp, 具体实现上采用Tomcat的Single Sign-On实现. 主要分为下面几个步骤:
1.修改Tomcat conf/server.xml 打开SSO支持
<Host> 
<!--节点下增加一个Value节点-->
<Valve className="org.apache.catalina.authenticator.SingleSignOn"
debug="0" requireReauthentication="false"/>
</Host>

2.container认证realm: user、role、server.xml的<Realm...>设置.
tomcat的认证机制有2个要素: user 和 role.
a.user 是区别一个个用户的唯一识别了。
b.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的认证
具体做法: 在web.xml里面加上如下的配置:
<security-constraint>
<web-resource-collection>
<web-resource-name>http://www.bt285.cn  BT下载 </web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- role name 指定哪个role可以访问,可以为多个role,如两个网站:http://www.5a520.cn http://www.feng123.com  -->
<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>

这里有2个要点:
auth-method
举例为了简单用了最基本的一种BASIC。若使用BASIC方式,当你去访问受保护认证的资源时,浏览器会弹出一个小窗口让你输入用户名和密码。(就像我们访问ioffice时,第一次弹出来的那个认证窗口)其他还有几种认证方式如:FORM、DIGEST、CLIENT-CERT。其中FORM是可以自己写login画面的,当然html的form内容有些规定(要符合j2ee和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实现.
如果是不同的Container上的webapp要做SSO,这种时候一种可行的方案是,最前面架一个webserver(比如apache),在webserver这层承担SSO的认证任务,后面内部就可用挂多个container了. 具体都用到的时候再调查吧.
分享到:
评论

相关推荐

    tomcat配置ssl-单点登录(sso).rar

    标题中的“tomcat配置ssl-单点登录(sso)”指的是在Apache Tomcat服务器上配置SSL安全套接层,以及实现单点登录(Single Sign-On, SSO)功能。这是一个涉及网络安全和用户认证的重要主题,主要目标是提高Web应用的...

    CAS+TOMCAT实现单点登录SSO

    cas-server-3.3.1-release.zip服务器端所有资源包 cas-client-java-2.1.1.zip客户端源码包 casclient-2.1.1.jar客户端JAR包 说明.doc,完整的说明帮助文档

    tomcat配置单点登录

    Tomcat提供了多种内置的Realm,如JDBCRealm用于从关系数据库中获取认证信息,DataSourceRealm通过JNDI数据源访问数据库,UserDatabaseRealm使用XML文件(conf/tomcat-users.xml)存储信息,JNDIRealm通过JNDI访问...

    基于Tomcat6的CAS SSO配置

    基于Tomcat6的CAS SSO配置涉及的主要知识点包括SSO(Single Sign-On,单点登录)、CAS(Central Authentication Service,中心认证服务)、SSL(Secure Socket Layer,安全套接层)以及Tomcat服务器的配置。...

    domino_ldap.rar_AD联合验证_Domino_Tomcat_sso_domino_domino_ldap

    标题“domino_ldap.rar_AD联合验证_Domino_Tomcat_sso_domino_domino_ldap”涉及到的是一个关于Lotus Domino(Domino)与Active Directory(AD)进行联合身份验证(Single Sign-On, SSO)的解决方案。在这个场景中,...

    基于cas的sso 单点登录tomcat配置过程

    在基于CAS的SSO实现中,Tomcat作为应用服务器,通常会与CAS服务器进行集成,以实现用户统一的身份验证。以下是对整个配置过程的详细说明: 1. **环境准备**:首先确保你的开发环境已经安装了Java运行环境(JRE)和...

    tomcat7,tomcat8包含windows喝linux版本的

    另外,Tomcat8加强了安全性,包括更强大的加密支持和对SSO(Single Sign-On)的更好集成。 这两个版本都提供了Windows和Linux平台的二进制分发包。Windows版本通常包含一个可执行的bat脚本,用户可以通过双击运行...

    在Tomcat中使用Yale CAS实现单点登陆(SSO)

    在Tomcat服务器中集成Yale CAS以实现SSO,首先需要下载CAS服务器和客户端的发行包。这两个包可以从官方提供的链接获取,分别是cas-server-2.0.12.zip和cas-client-2.0.11.zip。解压缩CAS服务器的war文件(cas.war)...

    SSO.rar_CAS SSO_ladp sso_ldap_linux sso_sso

    1. **安装CAS服务器**:在一台服务器上部署CAS服务,例如使用Tomcat或其他支持Java的Web服务器。 2. **配置CAS服务**:定制CAS服务器的配置,如认证策略、主题模板等。 3. **CAS客户端集成**:在Linux系统或应用中...

    Weblogic使用YALE(耶鲁)CAS实现SSO单点登录 的方法.doc

    Weblogic 使用 YALE CAS 实现 SSO 单点登录的方法 一、Yale CAS 简介 Yale CAS 是耶鲁大学开发的一种开源的单点登录(SSO)解决方案,提供了一个通用的身份验证框架,允许用户使用单个身份验证来访问多个应用程序。...

    sso-casDemo

    本示例"SSO-CASDemo"是一个简单的CAS整合演示,它包含三个Tomcat服务器实例,分别为app1、app2和CAS服务器。这些Tomcat实例分别部署了不同的应用,通过CAS进行统一的身份验证。这个demo是为了帮助开发者更好地理解和...

    SSO单点登录源码

    在实际开发中,你可能需要理解HTTP重定向和查询参数的使用,以及如何在Web容器(如Tomcat)中配置SSO过滤器。通过深入研究这些源码,你可以更深入地了解SSO的实现细节,这对于构建自己的SSO系统或者优化现有系统的...

    SSO文档 单点登录

    #### 三、使用Cookie实现SSO的关键技术点 根据给定的部分内容,我们可以通过设置Cookie来实现SSO功能。下面详细介绍这些关键技术点: 1. **设置Cookie的路径为setPath("/")** - 这意味着Cookie在整个Tomcat目录下...

    使用 CAS 在 Tomcat6 中实现单点登录

    总结来说,实现使用CAS在Tomcat6中进行单点登录,需要理解SSO的基本概念,熟悉CAS的工作原理和协议流程,掌握CAS Server的部署和配置,以及CAS Client在Tomcat中的集成。通过这些步骤,可以构建一个安全且方便的单点...

    sso单点登录 java代码

    7. **Web容器集成**:Tomcat、Jetty等Java Web容器通常支持会话共享和SSO配置,可以通过修改web.xml文件或使用特定插件来实现SSO。 8. **安全最佳实践**:除了技术实现外,SSO系统的设计还应遵循安全最佳实践,如...

    cas-server & tomcat (springmvc cas maven sso 详解 )

    cas-server & tomcat (springmvc cas maven sso 详解 ) springmvc cas maven sso 详解 http://knight-black-bob.iteye.com/blog/2342088

    tomcat7+redis单点 session共享jar

    **Tomcat7** 是一个广泛使用的开源Java Servlet容器,它实现了Java EE的Web应用程序规范。作为Apache软件基金会的一部分,Tomcat以其轻量级和高效性而闻名,是许多中小型项目的首选服务器。 **Redis** 是一个高性能...

    openjdk11+tomcat9+CASServer.zip

    4. **启动CAS Server**: 使用Tomcat的startup.sh(Unix/Linux)或startup.bat(Windows)脚本来启动服务。 5. **测试SSO功能**: 创建一个CAS客户端应用,配置相应的服务URL和验证机制,然后尝试登录,看是否能够...

    SSO单点登录

    - 使用Tomcat或其他兼容的Servlet容器部署CAS Server。 - 启动容器并访问CAS Server主页,确保一切正常运行。 4. **集成CAS到应用** - 在需要实现SSO的应用中添加CAS客户端库。 - 配置应用以使用CAS提供的登录...

Global site tag (gtag.js) - Google Analytics