首页 / 浏览问题 / 云GIS / 问题详情
iserver单点登陆角色不可设置?
1EXP 2017年11月01日

我使用 iserver 集成单点登陆的功能,用 cas 做验证,登陆后

不能操作后台,但会显示登陆账号和角色, 角色总是: everyone , user

并不是我后台给 cas 用户属性配置的 publich_user 

这是什么情况???有什么要再配置的??

1个回答

你好,请按照此文档检查下是否正确配置:
 

虽然 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');

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.重启Tomcat,即可用数据库中用户名&密码登陆验证

四、iServer验证

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

2.配置iServerCAS

由于我们的数据库表

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

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

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

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

​​​​​​​

1,780EXP 2017年11月02日
好的,我按步骤做下

建议更换到iServer 8.1.1a版本,下载地址:
http://support.supermap.com.cn/product/iServer.aspx
该页面下软件下载-SuperMap iServer 8C(2017)-(V8.1.1)

简单替换升级步骤:
删除旧版 (8.0.2)以下目录,并从新版(8.1.1a)复制以下目录到旧版对应目录(不能直接替换,因为包名有版本号)

  • {iServer根目录}/bin
  • {iServer根目录}/lib
  • {iServer根目录}/support
  • {iServer根目录}/webapps/iserver/WEB-INF/lib
  • {iServer根目录}/webapps/iserver/WEB-INF/worker-lib
有没网络上可用的 cas 测试服务?? 我直接配到那个服务测下,如果可以,,那是我cas 服务的问题,就不用去动手术了
抱歉,没有提供这样的CAS服务。
看上述文档使用的软件版本,建议先换成8.1.1a版本iServer,可能并不是CAS配置的问题。
正在下载,,iportal 是不是也得用8.1.1的??? 我的iportal 也是同样问题
iportal我们这边也用的8.1.1,相比iServer,iPortal在配置文件有额外的设置,见iPortal帮助文档
好的,谢谢!
...