多系统使用CAS实现SSO登录案例

这篇具有很好参考价值的文章主要介绍了多系统使用CAS实现SSO登录案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、CAS简介

实现SSO有很多种方案,比较简单且可行的一般都是如上两种再加上CAS,一般企业内部多个系统之间如果想实现SSO,比较推荐的方式就是今天要介绍的CAS,Central Authentication Service,中央身份认证服务。

CAS方案主要包含如下两个部分:

  • CAS Server,作为认证服务的中心,需要单独部署;
  • CAS Client,指需要单点登录的各个系统,官方支持10+类型的客户端;

如下是一个多系统完整进行CAS SSO的流程:

多系统使用CAS实现SSO登录案例,java,数据库,服务器,SSO,CAS

SSO登录流程

  1. 浏览器首先访问系统1的时候,系统1判定其未登录(没有局部会话),因此重定向到SSO认证中心,认证中心也没有当前浏览器的全局会话,因此返回登录页面给浏览器要求登录;
  2. 浏览器登录成功后,认证中心会保留该浏览器用户的全局会话,后续该用户再通过其它系统来SSO认证中心认证时,会将全局会话的JSESSIONID带给认证中心,认证中心就能知道该用户目前具有全局会话,是已登录状态;
  3. 认证中心创建一个临时的授权令牌给到系统1,该令牌具有时间有效期,且只能使用一次,系统1收到该令牌后,由于无法判断是否被伪造,因此需要再次请求认证中心校验。得到认证成功回复后,系统1就会给当前用户创建一个局部会话,在该局部会话未过期之前,用户再次访问系统1都不需要再到认证中心进行认证;
  4. 若浏览器用户此时访问其它系统2,系统2判定其未登录(没有局部会话),因此重定向到SSO认证中心,并带上第二步保存的全局会话JSESSIONID,认证中心判定用户已经登录,因此创建一个临时的授权令牌给到系统2,系统2再进行步骤3的内容。

然后是SSO注销的一个流程:

多系统使用CAS实现SSO登录案例,java,数据库,服务器,SSO,CAS

SSO注销流程

二、CAS实现

2.1 CAS Server

服务端在官方github地址上有现成的war包可供使用,直接下载即可,由于最新版本的依赖管理工具已经从maven改为gradle了,本人由于更加熟悉maven,因此没有选择最新版本,而是使用5.3版本。下载之后解压即可。

在解压缩后的目录中执行打包命令build.cmd package,就能在target目录下看到war包了,将该cas.war放在本地的tomcat的webapps目录下,启动tomcat即可。

此时访问本地tomcat服务http://localhost:8080/cas就能看到登录页面了。

多系统使用CAS实现SSO登录案例,java,数据库,服务器,SSO,CAS

CAS Server登录页面

默认的账密为:casuser/Mellon,该密码的配置在如下目录内WEB-INF\classes\application.properties,如需修改密码需要自行修改tomcat中解压后的如下文件内容。

##
# CAS Authentication Credentials
#
cas.authn.accept.users=casuser::Mellon

默认情况下,client端和server端的通信协议是https的,如果想要在本地http协议环境下跑通,就需要关掉该默认的https服务。

WEB-INF\classes\application.properties的最后添加如下配置内容:
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=trueWEB-INF\classes\services\HTTPSandIMAPS-10000001.json中修改内容:
"serviceId" : "^(https|http|imaps)://.*"

然后重启CAS Server即可。

2.2 CAS Client

<dependency>
    <groupId>net.unicon.cas</groupId>
    <artifactId>cas-client-autoconfig-support</artifactId>
    <version>2.1.0-GA</version>
</dependency>
@EnableCasClient
@SpringBootApplication
public class SsoClient1Application {

    public static void main(String[] args) {
        SpringApplication.run(SsoClient1Application.class, args);
    }

}
@RestController
public class LoginClient1Controller {

    @GetMapping("/getUserInfo")
    public String getUserInfo(){
        return "user1";
    }

}
server.port=8081

cas.server-url-prefix=http://localhost:8080/cas
cas.server-login-url=http://localhost:8080/cas/login
cas.client-host-url=http://localhost:8081
cas.validation-type=cas3

如上是client1的全部内容,client2基本类似,不再赘述。

启动两个客户端之后,访问它们的任意一个接口,都会重定向到CAS Server的登录页面,只要完成一次登录,再访问两个系统的任意接口都可以直接进入,无需再登录了,从而实现了SSO。

那么CAS和我们熟知的OAuth2.0协议有什么区别呢?

  1. OAuth2是三方授权协议,允许用户在不提供账号密码的情况下,通过信任的应用进行授权,使其客户端可以访问权限范围内的资源。
  2. CAS是中央认证服务协议,一个基于票据方式实现 SSO 单点登录的框架,为 Web 应用系统提供一种可靠的单点登录解决方法。
  3. CAS 的单点登录是保障客户端的用户资源的安全 ,而OAuth2 则是保障服务端的用户资源的安全。

CAS 客户端要获取的最终信息是,这个用户到底有没有权限访问我(CAS 客户端)的资源;OAuth2 获取的最终信息是,我(oauth2 服务提供方)的用户的资源到底能不能让你(oauth2 的客户端)访问。

因此,需要统一的账号密码进行身份认证,用 CAS;需要授权第三方服务使用我方资源,使用OAuth2

最后,CAS不仅支持SSO实现方案中的CAS协议,还支持OAuth2、SAML等协议,具体可以参考官方文档。

参考文档

CAS - Getting Started Guide (apereo.github.io)

基于CAS实现SSO单点登录 - 知乎 (zhihu.com)文章来源地址https://www.toymoban.com/news/detail-609659.html

到了这里,关于多系统使用CAS实现SSO登录案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SSO、CAS、OAuth、OIDC

    参考 简单了解概念: https://www.bilibili.com/video/BV1XG411w7DN/ 简单了解操作: https://www.bilibili.com/video/BV1334y11739/ openid-connect 👍流程图解: https://www.youtube.com/watch?v=t18YB3xDfXI (图:https://developer.okta.com/blog/2019/10/21/illustrated-guide-to-oauth-and-oidc) 流程案例: https://www.youtube.com/watch?v=9

    2024年02月05日
    浏览(27)
  • Java连接数据库(学生管理系统案例,可以实现增删改查)

    首先,需要做一个准备工作 ——下载jar包,这个包是用来支持数据库的连接的 官网的下载链接:MySQL :: Download Connector/J 点击链接进入页面: 选择画红框的下载按钮。 与此同时,打开IDEA开发工具,在当前项目目录下新建一个lib目录文件夹用来存放第三方jar包,这样做方便管

    2024年02月07日
    浏览(42)
  • 八个开源免费单点登录(SSO)系统

    使用SSO服务可以提高多系统使用的用户体验和安全性,用户不必记忆多个密码、不必多次登录浪费时间。下面推荐一些市场上最好的开源SSO系统,可作为商业SSO替代。 单点登录(SSO)是一个登录服务层,通过一次登录访问多个应用。使用SSO服务可以提高多系统使用的用户体验

    2024年02月04日
    浏览(37)
  • 若依微服务集成CAS,实现单点登录

    若依(RuoYi)微服务是一款基于Spring Cloud Alibaba开发的企业级微服务框架,采用前后端分离方式,使用了常用的微服务组件,如Feign、Nacos、Sentinel、Seata等,提供了丰富的微服务治理功能,如服务注册、发现、路由、负载均衡、熔断降级、限流等。借助若依微服务框架可以让我

    2024年02月12日
    浏览(29)
  • SpringBoot 实现CAS Server统一登录认证

    ​ CAS(Central Authentication Service)中心授权服务,是一个开源项目,目的在于为Web应用系统提供一种可靠的单点登录。 ​ 在整个认证的流程中的整个流程大概是:首先由CAS Client(我们的客户端应用)发起请求,CAS Client 会重定向到CAS Server进行登录,CAS Server进行账户校验且多

    2024年01月16日
    浏览(34)
  • 单点登录:CAS使用springboot main方法启动cas-server

    1.下载demo 2.使用eclipse导入maven项目。此次我是用的spring tool suite 4导入的。 导入时会用较长时间,10分钟吧。需要下载很多资源。 3.报错,提示缺少jar包 4.其他地方下载该jar包。我是在cas-server-webapp-tomcat-5.3.9.war中解压中找到xmlsectool-2.0.0.jar。 5.安装jar。 6.更新项目。 pom.xml右键

    2024年02月09日
    浏览(42)
  • 二、springboot集成CAS客户端实现单点登录

    pom中引入依赖 yml中添加cas配置 读取CAS相关配置 cas配置类 单点登录接口demo 访问loingCas接口时,若未在CASserver登录,则会被拦截跳转到CAS的登陆页面,登陆成功后放行继续访问loginCas接口

    2024年02月15日
    浏览(36)
  • 深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)

    深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)。 一、简介 单点登录(Single Sign On),简称为 SSO。 它的解释是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 ❝ 所谓一次登录,处处登录。同样一处退出,处处退出。 ❞

    2024年02月11日
    浏览(29)
  • 基于flask-oidc的OIDC协议授权码模式单点登录SSO实现

    关于SSO单点登录、OIDC协议、授权码模式等相关概念详见基于OIDC的SSO单点登录文章内容 应用注册: 在提供OIDC服务的认证系统中注册应用信息 授权流程: 携带由应用生成的 state (防CSRF跨域信息)和在认证系统中注册的应用信息重定向请求认证系统的授权服务 授权服务重定向到登

    2024年02月13日
    浏览(54)
  • 若依前后端分离项目集成CAS 5.3实现单点登录

    一.获取CAS5.3项目资源 GitHub - apereo/cas-overlay-template at 5.3 cas5.3.x还是基于jdk8运行,下一个版本6.0.x就基于jdk9了,随着cas版本升级要求jdk版本也越来越高,官网上和github上都有每个版本基本运行条件的说明,根据实际情况选择版本。 二.tomcat部署 利用maven-package打war包 2.将war包放

    2024年02月02日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包