一、安装CAS

1.环境准备

  • cas-server-3.5.2-release.zip
  • apache-tomcat-7.0.42.zip
  • supermap_iserver_8.1.1a

2.安装CAS

1.将cas-server-3.5.2-release.zip解压后,将cas-server-3.5.2\module\cas-server-webapp-3.5.2.war包部署至Tomcat的webapps目录下,为了登录方便,我们将cas-server-webapp-3.5.2.war重命名为cas.war。

2.启动Tomcat,访问http://localhost:8080/cas 能正常跳转则表示部署成功。



虽然 CAS Server 已经部署成功,但这只是一个缺省的实现,在默认认证规则,只要输入用户名和密码相同,就可以登录,比如aaa/aaa,bbb/bbb。

二、扩展认证接口(JDBC)

当然,在实际使用的时候,一般会将用户名和密码数据库进行认证,下面介绍3种存储方式。

用户存储类型:

  • SqLite存储。
  • MySQL存储。
  • Oracle存储。

三、存储配置

1.数据库准备

  • SqLite中新建名字为Users的数据库,新增app_user表和测试数据(使用SQLiteStudio工具创建)。
  • MySQL中新建名字为cas的数据库,新增app_user表和测试数据。
  • Oracle中新增app_user表和测试数据。
#SqLite和MySQL可使用如下语句创建表
CREATE TABLE app_user (
username varchar(30) NOT NULL ,
password varchar(45) NOT NULL ,
role varchar(40) NOT NULL
);
#Oralce可使用如下语句创建表
CREATE TABLE app_user (
username varchar(30) NOT NULL ,
password varchar(45) NOT NULL ,
role varchar(40) NOT NULL
);

2. 添加测试数据

INSERT INTO app_user VALUES ('lisi', 'supermap', 'u1');
INSERT INTO app_user VALUES ('zhangsan', 'supermap', 'u1');
INSERT INTO app_user VALUES ('supermap', 'supermap', 'cas_SYSTEM');

(注意)SqLite数据库创建完成后,将Users.db文件放到Tomcat\webapps\cas中。

3.添加依赖

将下列依赖jar放到,Tomcat\webapps\cas\WEB-INF\lib中

  • cas-server-support-jdbc-3.5.2.jar(cas-server-3.5.2\module下有)
  • commons-pool-1.5.4.jar
  • commons-dbcp-1.4.jar
  • sqlite-jdbc-3.14.2.1.jar(可选,SqLite需要)
  • mysql-connector-java-5.1.26-bin.jar(可选,MySQL需要)
  • classes12.jar(可选,Oracle需要,Oracle安装目录\product\11.2.0\dbhome_1\oui\jlib\classes12.jar)

4编辑webapps\cas\WEB-INF\deployerConfigContext.xml文件。

5.搜索SimpleTestUsernamePasswordAuthenticationHandler,将默认规则其所在bean注释,新增

<bean id="primaryAuthenticationHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource"></property>
<property name="sql" value="select password from app_user where username =?"/>
</bean>

6.然后在添加一个bean,这个bean是跟authenticationManager同一级别的,注意这个很重要,这个bean不是跟第5步之前那个bean class同级

SqLite配置

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>org.sqlite.JDBC</value>
</property>
<property name="url">
<value>jdbc:sqlite:../webapps/cas/Users.db</value>
</property>
<property name="username">
<value> </value>
</property>
<property name="password">
<value> </value>
</property>
</bean>

MySQL配置

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://localhost:3306/cas?useUnicode=true&amp;characterEncoding=utf-8</value></property>
<property name="username"><value>root</value></property>
<property name="password"><value>supermap</value></property>
</bean>

Oracle配置

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property>
<property name="url"><value>jdbc:oracle:thin:@127.0.0.1:1521:orcl</value></property>
<property name="username"><value>system</value></property>
<property name="password"><value>supermap</value></property>
</bean>

7.将原有的attributeRepository注释,新增

<bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
<constructor-arg index="0" ref="dataSource"/>
<constructor-arg index="1" value="select * from app_user where {0}"/>
<property name="queryAttributeMapping">
<map>
<entry key="username" value="username"/>
</map>
</property>
<property name="resultAttributeMapping">
<map>
<entry key="username" value="username"/>
<entry key="password" value="password"/>
<entry key="role" value="role"/>
</map>
</property>
</bean>

8.serviceRegistryDao中增加

9.重启Tomcat,即可用数据库中用户名&密码登陆验证。

四、iServer验证

1.登陆iServer,访问http://localhost:8090/iserver/manager/security/casconfig

2.配置iServerCAS

由于我们的数据库表结果如下:



  • 启用CAS登陆
  • 设置CAS用户属性字段:role
  • 设置CAS服务访问地址:http://localhost:8080/cas
  • 保存配置
  • 属性角色关联信息配置中,添加属性角色配置u1,勾选全部角色用于测试。

3.退出当前用户登陆,访问http://localhost:8090/iserver/services/security/login

4.点击使用CAS账号登陆,输入测试账户lisi/supermap 或 自定义属性值的账户supermap/supermap登陆

最终可以看到当前登陆账户为CAS数据库中登陆账户



(转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢)

SuperMap iServer之CAS单点登陆搭建流程的更多相关文章

  1. cas单点登陆系统-casServer搭建

    最近工作比较忙,空闲的时间在搞单点登陆系统,自己写了一套SSO在GitHub上,过程走通了.通过这个例子,自己熟悉了流程,而且破天荒的使用了抽象设计模式,并且熟悉了cookies和session的使用 ...

  2. CAS单点登陆 SSO

    什么是单点登陆 SO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制.它是目前比较流行的企业业务整合的解决方 ...

  3. cas单点登陆。就这一篇就够了!!!!!

    前言: cas是什么我就不累赘说了.就简单说下大致的流程.首先,cas是一个独立的项目.就是一个war包,部署在tomcat上面启动就ok.然后我们要实现单点登陆,无疑是访问系统1,如果没有登录,就跳 ...

  4. CAS单点登录详细流程

    一.CAS简介和整体流程 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目.CAS ...

  5. CAS单点登陆/oAuth2授权登陆

    单点登陆 CAS是一个单点登录框架,即Central Authentication Service(中心认证服务) ,开始是由耶鲁大学的一个组织开发,后来归到apereo去管,github地址:htt ...

  6. CAS单点登陆的两个原理图

    最近学习CAS单点登录,所以在网上找了两张比较清晰的原理图以供参考: [CAS浏览器请求认证序列图] 其中:*  ST:Service Ticket,用于客户端应用持有,每个ST对应一个用户在一个客户 ...

  7. CAS学习笔记四:CAS单点登出流程

    CAS 的登出包含两种情况,一种是CAS客户端登出,另一种是CAS单点登出,使用流程图说明这两者的不同.(一图胜千言) 总结自官方文档 CAS客户端登出流程 如图,客户端的登出仅仅是过期当前用户与客户 ...

  8. cas单点登陆系统-建立单点登陆系统的应用

    上一篇如果已经操作成功,说明casServer已经实现了,下面就是搭建casClient与casServer联合调试.代码已经上传到github上.你可以下载看看,如果自己在搭建的过程中遇到问题,你也 ...

  9. cas单点登录搭建

    Cas Server下载:http://developer.jasig.org/cas/ Cas Client下载:http://developer.jasig.org/cas-clients/ 测试 ...

随机推荐

  1. Ubuntu 16.04 catkin_make 常见操作

    参考博客:https://answers.ros.org/question/54178/how-to-build-just-one-package-using-catkin_make/ 1. catk ...

  2. DLL注入实践

    Windows系统大量使用dll作为组件复用,应用程序也会通过dll实现功能模块的拆分.DLL注入技术是向一个正在运行的进程插入自有DLL的过程. Window下的代码注入 常见的Windows代码注 ...

  3. [Golang] http.Post导致goroutine泄漏

    记录一个用http.Post的问题 if _, err := http.Post("http://127.0.0.1:8080", "", nil); nil ...

  4. html2canvas 将网页截图为图片,上传base64 到服务端

    await html2canvas(getById("winyh"), { height:500, allowTaint: true, useCORS: true, }).then ...

  5. RTSP Spectification

    Refer: https://www.ietf.org/rfc/rfc2326.txt Network Working Group H. SchulzrinneRequest for Comments ...

  6. kafka生产部署

    kafka真实环境部署规划 1. 操作系统选型 因为kafka服务端代码是Scala语言开发的,因此属于JVM系的大数据框架,目前部署最多的3类操作系统主要由Linux ,OS X 和Windows, ...

  7. [QT] - 图片查看器(数码相框)#工程源码

    简介: 大学期间弄的一个小软件,当时是将该软件移植到嵌入式开发板使用的,软件的几个功能截图如正文所示,文末提供工程源码文件,感谢支持! 功能截图: [ 打开软件 ] [ 打开图片 ] [ 图片可放大. ...

  8. CentOS 7 编译安装clang+llvm

    天在CentOS上将最新版本的LLVM套件(LLVM,Clang和Libc++)编译安装好了,中间遇到了不少问题.虽然已经有很多博客介绍如何编译安装LLVM了,但是根据我自己亲身体验的情况来看,还是有 ...

  9. Python之路【第二十三篇】:数据库基础

    数据库的简介 数据库 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据库中的数据按一定的数学模型组织.描述和存储,具有较小的冗余,较高的数据独立性和易扩展性, ...

  10. LeetCode 5216. 统计元音字母序列的数目(Java)DP

    5216. 统计元音字母序列的数目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i', 'o', ...