shiro-cas简介&&背景
shiro是权限管理框架,利用它实现权限控制。为了实现为多个系统提供统一认证入口,我们需要集成单点登录框架cas。目前部门系统已经实现了shiro-cas集成,现在只需要引入shiro-cas的集成包,并且配置相关信息即可实现单点登录功能。权限系统的引入主要是解决菜单权限的问题,主要需要引入UED集成框架并且进行初始化和配置相关信息。
cas基本的协议过程
shiro-cas和权限系统引入
1、在web的pom文件中引入shiro-cas依赖和crm权限系统依赖:
<!-- shiro+cas -->
<dependency>
<groupId>com.fpx.shiro</groupId>
<artifactId>shiro-cas-spring-boot-starter</artifactId>
</dependency>
<!-- 对接权限系统 -->
<dependency>
<groupId>com.fpx.basic</groupId>
<artifactId>fpx-acms-api</artifactId>
</dependency>
2、在父级的pom文件中设置shiro-cas的版本和crm权限系统api的版本,目前最新的shiro-cas版本是1.1.0-SNAPSHOT:
<fpx.ironforge.shiro>1.2.0-SNAPSHOT</fpx.ironforge.shiro>
<!-- shiro+cas -->
<dependency>
<groupId>com.fpx.shiro</groupId>
<artifactId>shiro-cas-spring-boot-starter</artifactId>
<version>${fpx.ironforge.shiro}</version>
</dependency>
3、在profile文件中配置shiro-cas相关信息:
#shiro+cas(测试环境)
登录地址:shiro.login-url=/login(例)
域名映射地址:shiro.server-url=https://sso.dev.xxxx.com:8443(例)
IP地址:shiro.client-url=http://xxx.xx.xx.xxx:xxxx/xxxxxxx(例)
shiro.filter-chain.1=/,anon
shiro.filter-chain.2=/js/**,anon
shiro.filter-chain.3=/css/**,anon
shiro.filter-chain.4=/images/**,anon
#shiro+cas(UAT环境)
登录地址:shiro.login-url=/login(例)
域名映射地址:shiro.server-url=https://sso.uat.xxxx.com(例)
IP地址:shiro.client-url=http://xxxxxxx.uat.xxxx.com(例)
shiro.filter-chain.1=/,anon
shiro.filter-chain.2=/js/**,anon
shiro.filter-chain.3=/css/**,anon
shiro.filter-chain.4=/images/**,anon
系统的客户端ID(唯一):shiro.clientId=xxxxx(在基础系统部权限系统中加入新系统时自动生成)
4、在静态资源中引入UED集成js框架并进行初始化:
http://static.dev.4px.com/fpxres/ued/lastest/fpx.ued.frame.base.js
(function($, window, IRF, undefined) {
'use strict';
// 加载UED-框架模块
window.UED_FRAME.init({
'clientName' : 'xxx系统', // 客户端系统-名称(必传)
'clientHomeUrl' : '/', // 客户端系统-主页地址
'clientId' : 'xxxxx', // 权限系统-客户端ID(必传)
'userId' : '', // 当前登录用户的ID(必传)
'contextPath' : '', // 客户端系统-上下文路径
'logoutUrl' : '', // 客户端系统-cas退出地址(必传)
'isInternational' : false // 客户端系统是否需要支持国家化(如果菜单需要支持国家化,那么请在权限系统中,配置好相应的菜单国际码,然后再通知组件站点配置对应的国际化资源信息)
});
})(jQuery, window, IRF);
5、在权限系统中添加新菜单,并且在controller中引入权限注解@RequiresPermissions:
@RequiresPermissions("info:view"):[双引号中的是权限字符串,对应权限系统配置中的权限字符串]