前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

SSO CAS

作者头像
matt
发布2022-10-25 15:47:04
1.1K0
发布2022-10-25 15:47:04
举报
文章被收录于专栏:CSDN迁移

SSO CAS

一、单点登录与CAS协议

  1. SSO(概念) 目前比较流行的企业业务整合的解决方案之一,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
  2. CAS(实现) 定义:开源的企业级单点登录解决方案。 CAS框架:CAS(Central Authentication Service)是实现SSO单点登录的框架。 CAS Server为需要独立部署的Web应用;CAS Client支持非常多的客户端。

访问服务 -> 丁香认证 -> 用户认证 -> 发放票据 -> 验证票据 -> 传递用户信息

  • 名次 Ticket Granting ticket(TGT):可以认为是CAS Server根据用户名密码生成的一张票,存在server端。 Ticket-granting cookie(TGC) :其实就是一个cookie,存放用户身份信息,由server发给client端。 Service ticket(ST):由TGT生成的一次性票据,用于验证,只能用一次。相当于server发给client一张票,然后client拿着这个票再来找server验证,看看是不是server签发的。

CAS过程 搭建方法

二、搭建Tomcat-CAS——CAS Server端

Step 1. 步骤一:配置Tomcat 下载Tomcat(建议8以上版本)

代码语言:javascript
复制
//复制war包进入web-apps,运行Tomcat
sudo sh startup.sh
sh shutdown.sh

1.修改端口号 (1) tomcat-config-service.xml中修改为9100(protocol=“HTTP/1.1”) (2) cas-WEB-INF-cas.properties中修改为9100(server.name=http://localhost:9100)

2.去除https认证(secure) 避开SSL证书,方便测试和编码过程。 (1) cas-WEB-INF-deployerConfigContext.xml中修改requireSecure

代码语言:javascript
复制
<bean id="proxyAuthenticationHandler" class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" p:requireSecure="false"/>

(2) cas-WEB-INF-spring-configuration-ticketGrantingTicketCookieGenerator.xml中修改

代码语言:javascript
复制
p:cookieSecure="false"
p:cookieMaxAge="3600" <!-- cookie有效时间为3600s -->

(3) cas-WEB-INF-spring-configuration-warnCookieGenerator.xml中修改

代码语言:javascript
复制
p:cookieSecure="false"
p:cookieMaxAge="3600"

3.允许退出登录后重定向到其他页面(…?service=…) cas-WEB-INF-spring-configuration-warnCookieGenerator.xml中修改

代码语言:javascript
复制
 <bean id="logoutAction" class="org.jasig.cas.web.flow.LogoutAction" p:servicesManager-ref="servicesManager" p:followServiceRedirects="${cas.logout.followServiceRedirects:true}"/>

三、代码实现——CAS Client端

导入相应的依赖:

代码语言:javascript
复制
<dependency>
    <groupId>net.unicon.cas</groupId>
    <artifactId>cas-client-autoconfig-support</artifactId>
    <version>1.4.0-GA</version>
</dependency>

application.properties配置:

代码语言:javascript
复制
server.port=9001

cas.server-url-prefix=http://cas.server.com:8443/cas
cas.server-login-url=http://cas.server.com:8443/cas/login
cas.client-host-url=http://cas.client1.com:9001
cas.use-session=true
cas.validation-type=cas

#自定义的退出url,退出成功后跳转到 http://cas.client1.com:9001/logout/success
casClientLogoutUrl=http://cas.server.com:8443/cas/logout?service=http://cas.client1.com:9001/logout/success

Springboot 启动类添加标签@EnableCasClient,启用CAS Client。 自定义Controller类,添加login和logout逻辑。

Config类需要配置忽略授权的URL:

代码语言:javascript
复制
@Configuration
public class CASConfig {
    @Value("${cas.server-url-prefix}")
    private String serverUrlPrefix;
    @Value("${cas.server-login-url}")
    private String serverLoginUrl;
    @Value("${cas.client-host-url}")
    private String clientHostUrl;
 
    /**
     * 授权过滤器,添加一个id为filterAuthenticationRegistration的bean标签
     * @return
     */
    @Bean
    public FilterRegistrationBean filterAuthenticationRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new AuthenticationFilter());
        // 设定匹配的路径
        registration.addUrlPatterns("/*");
        Map<String,String> initParameters = new HashMap<String, String>();
        initParameters.put("casServerLoginUrl", serverUrlPrefix);
        initParameters.put("serverName", clientHostUrl);
        //忽略的url,"|"分隔多个url
        initParameters.put("ignorePattern", "/logout/success|/index.html|.xml|/filename/*");
        registration.setInitParameters(initParameters);
        // 设定加载的顺序
        registration.setOrder(1);
        return registration;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SSO CAS
  • 一、单点登录与CAS协议
  • 二、搭建Tomcat-CAS——CAS Server端
  • 三、代码实现——CAS Client端
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档