• SuperMap iServer之CAS单点登陆搭建流程


    一、安装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.2modulecas-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文件放到Tomcatwebappscas中。

    3.添加依赖

    将下列依赖jar放到,TomcatwebappscasWEB-INFlib中

    • cas-server-support-jdbc-3.5.2.jar(cas-server-3.5.2module下有)
    • 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安装目录product11.2.0dbhome_1ouijlibclasses12.jar)

    4编辑webappscasWEB-INFdeployerConfigContext.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/ 如发现有错,请留言,谢谢)

  • 相关阅读:
    C中的system函数
    结构体数组
    转载--C++的反思
    oracle临时表空间
    oracle行转列,列转行
    oracle查询表结构语句
    实例化内部类
    Java非静态内部类为什么不能有静态成员
    oracle显示转换字段类型cast()函数
    linux中vim常用命令
  • 原文地址:https://www.cnblogs.com/zhangyongli2011/p/11230021.html
Copyright © 2020-2023  润新知