IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 框架CAS实现SSO单点登录功能 -> 正文阅读

[Java知识库]框架CAS实现SSO单点登录功能

1. 概述

1.1. 什么是SSO?

单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一次 就可以访问所有相互信任的应用系统。

管网地址:https://www.apereo.org/projects/cas

1.2. 什么是CAS?

随着SSO技术的流行,相关产品也比较多,其中CAS就是一套解决方案,CAS(Central Authentication Service)中文翻译为统一身份认证服务或中央身份服务,它由服务端和客户端组成,实现SSO,并且容易进行企业应用的集成。

CAS是Yale大学(耶鲁)发起的一个开源项目,旨在为web应用系统提供一种可靠的单点登录方法,CAS在2004年12月正式成为JA-SIG的一个项目。

CAS provides enterprise single sign-on service for the Web:

  • An open and well-documented protocol
  • An open-source Java server component
  • Pluggable authentication support (LDAP, database, X.509, 2-factor)
  • Support for multiple protocols (CAS, SAML, OAuth, OpenID)
  • A library of clients for Java, .Net, PHP, Perl, Apache,?uPortal, and others
  • Integrates with?uPortal, BlueSocket, TikiWiki, Mule, Liferay, Moodle and others
  • Community documentation and implementation support
  • An extensive community of adopters

CAS具有以下的特点:

  • 一个开放且有据可查的协议
  • 一个开源的 Java 服务器组件
  • 可插拔身份验证支持(LDAP、数据库、X.509、2-factor)
  • 支持多种协议(CAS、SAML、OAuth、OpenID)
  • 用于 Java、.Net、PHP、Perl、Apache、uPortal等的客户端库
  • uPortal、BlueSocket、TikiWiki、Mule、Liferay、Moodle 等集成
  • 社区文档和实施支持
  • 广泛的采用者社区

有了CAS,我们的系统架构就演变成下面这样的:手工绘制,看把。。。

从架构上可以看出,CAS包含两个部分:CAS Server和CAS Client.

  • CAS Server需要独立部署,主要负责对用户的认证工作,CAS Client负责处理

  • 对客户端受保护资源的访问请求,需要登录,重定向到CAS Server。

2. CAS Server服务器端

2.1. CAS服务器端软件包下载

https://github.com/apereo/cas-overlay-template

切换分支下载源码,目前最新源码是6.4版本的。我下载的是5.3 ,6.4编译是gradle,不是maven,

下载后idea打开build新的war包

?然后放进tomcat中,启动项目

?启动成功浏览器输入地址打开??http://localhost:8080/cas?者?http://localhost:8080/cas/login

默认用户名和密码在\webapps\cas\WEB-INF\classes\application.properties里面 用户名:casuser 密码:Mellon

?

?

2.3. CAS Server服务器配置

2.3.1 去除https认证

CAS默认使用的是HTTPS协议,如果使用HTTPS协议需要SSL安全证书(需向特定的机构申请和购买)。如果对安全要求不高或是在开发测试阶段,可使用HTTP协议。我们这里讲解通过修改配置,让CAS使用HTTP协议。当然也可以配置tomcat的https协议二选一。。

修改CAS服务端配置文件:

?增加?

cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true

?然后再次修改?D:\apache-tomcat-8.5.31\webapps\cas\WEB-INF\classes\services路径下的HTTPSandIMAPS-10000001.json文件

修改serviceid??

"serviceId" : "^(https|http|imaps)://.*"

3. CAS Client客户端配置(自己项目)

第一:新建两个项目分别增加Pom文件的依赖即pom.xml

<dependency>
    <groupId>net.unicon.cas</groupId>
    <artifactId>cas-client-autoconfig-support</artifactId>
    <version>2.1.0-GA</version>
</dependency>

第二:启动类追加开启CAS的注解@EnableCasClient

第三:application.yml配置文件

客户端1?

server:
  port: 8010
cas:
  server-url-prefix: http://localhost:8080/cas
  server-login-url: http://localhost:8080/cas/login
  client-host-url: http://localhost:8010
  validation-type: cas3

项目写个测试类

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Api(description = "SSO-CAS的测试")
public class TestController {

    @GetMapping("/test1")
    public String test1(){
        return "test1....";
    }
}

客户端2

server:
  port: 8011
cas:
  server-url-prefix: http://localhost:8080/cas
  server-login-url: http://localhost:8080/cas/login
  client-host-url: http://localhost:8011
  validation-type: cas3

测试类

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Api(description = "SSO-CAS的测试")
public class TestController {

    @GetMapping("/test2")
    public String test1(){
        return "test2....";
    }
}

1.首先重新启动tomcat服务器中的CAS Server。

2.分别启动客户端1和客户端2,然后在浏览器地址栏输入客户端1的地址http://localhost:8010/test1和客户端2的地址,跳出登陆页面

当我们在其中一个登录界面登录账号后(假设登录客户端2)就会跳转到登陆后的界面,既test2字符串页面。。同理test1登陆后跳转test1页面。。以上就是单点登录的测试。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:17:12  更:2021-08-10 13:18:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:07:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码