最近公司要整合CAS单点登录,权限框架使用的是shiro(不了解的同学可以去看看,很方便的一个轻量级框架),CAS之前也做过,但之前没有使用shiro这套框架,所以这里记录下CAS与Shiro的集成步骤以及需要注意到的地方。
1.首先当然是下载相关jar包,我们项目是maven结构的,这里给出pom文件配置示例
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-cas</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.jasig.cas.client</groupId>
<artifactId>cas-client-core</artifactId>
<version>3.2.1</version>
</dependency>注:本文主要用来记录CAS与Shiro的集成配置,所以CAS相关内容不做描述。
2.定义casRealm 示例如下
public class CustomRealm extends CasRealm{
private static final Logger logger = LoggerFactory.getLogger(CustomRealm.class);
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
String username = (String)principals.getPrimaryPrincipal();
SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
/* authorizationInfo.setRoles(userService.findRoles(username));
authorizationInfo.setStringPermissions(userService.findPermissions(username));*/
return authorizationInfo;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
CasToken casToken = (CasToken) token;
if (token == null) {
return null;
}
String ticket = (String)casToken.getCredentials();
if (!StringUtils.hasText(ticket)) {
return null;
}
TicketValidator ticketValidator = ensureTicketValidator();
try {
// 验证票据是否有效
Assertion casAssertion = ticketValidator.validate(ticket, getCasService());
// 获取返回信息
AttributePrincipal casPrincipal = casAssertion.getPrincipal();
String userId = casPrincipal.getName();
logger.debug("Validate ticket : {} in CAS server : {} to retrieve user : {}", new Object[]{
ticket, getCasServerUrlPrefix(), userId
});
//获取配置的返回信息
Map attributes = casPrincipal.getAttributes();
casToken.setUserId(userId);
String rememberMeAttributeName = getRememberMeAttributeName();
String rememberMeStringValue = (String)attributes.get(rememberMeAttributeName);
boolean isRemembered = rememberMeStringValue != null && Boolean.parseBoolean(rememberMeStringValue);
if (isRemembered) {
casToken.setRememberMe(true);
}
//List
本文档记录了在公司项目中整合CAS单点登录与Shiro权限框架的步骤。内容包括 CAS 和 Shiro 的集成配置,以及需要注意的细节,旨在帮助开发者了解如何在基于Maven的项目中设置相关依赖和自定义casRealm。

7960

被折叠的 条评论
为什么被折叠?



