简介:
### CAS单点登录服务器配置详解#### 一、CAS单点登录概述CAS(Central Authentication Service)是一种开放源代码的单点登录协议和服务框架,它为Web应用提供了一种简化了的身份验证流程。
通过CAS,用户只需要在一个地方完成登录过程,即可在多个应用间共享登录状态,无需重复登录。
#### 二、CAS服务器安装与配置##### 2.1 安装CAS服务端1. **下载CAS服务端**:首先从官方网址http://www.cas.org/下载最新的CAS服务端压缩包。
2. **部署WAR包**:将下载的WAR包复制到Tomcat的webapps目录下,并将其重命名为`cas.war`。
3. **启动Tomcat**:启动Tomcat服务器,自动解压WAR包,此时会在Tomcat的webapps目录下生成一个名为`cas`的文件夹。
4. **访问CAS**:通过浏览器访问`http://localhost:8896/cas`来测试CAS服务是否正常启动。
##### 2.2 配置CAS使用数据库验证为了实现更安全、更灵活的身份验证机制,我们可以配置CAS使用数据库进行用户身份验证。
具体步骤如下:1. **修改部署配置文件**:打开`cas-server-webapp\WEB-INF\deployerConfigContext.xml`文件,找到`SimpleTestUsernamePasswordAuthenticationHandler`配置项,将其替换为`QueryDatabaseAuthenticationHandler`。
```xml <bean id="authenticationHandler" class="org.jasig.cas.authentication.handler.QueryDatabaseAuthenticationHandler"> <!-- 数据库连接数据源 --> <property name="dataSource" ref="dataSource"/> <!-- 查询语句 --> <property name="sql" value="SELECT password FROM users WHERE username = ?"/> <!-- 密码加密方式 --> <property name="passwordEncoder" ref="passwordEncoder"/> </bean> ```2. **配置数据库连接**:在同一文件中添加一个新的`dataSource` bean来定义数据库连接信息。
```xml <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/casdb"/> <property name="username" value="casuser"/> <property name="password" value="password"/> </bean> ```3. **配置密码加密方式**:继续在同一文件中添加`passwordEncoder` bean来指定密码加密方式,这里使用MD5作为示例。
```xml <bean id="passwordEncoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder"> <constructor-arg value="MD5"/> </bean> ```4. **测试数据库验证**:重启Tomcat服务器,访问CAS服务器页面,使用数据库中的用户名和密码尝试登录,验证是否可以成功登录。
#### 三、CAS工作原理CAS的工作原理主要分为以下几个步骤:1. **用户访问服务**:用户首次访问受保护的资源时,CAS客户端会检测到HTTP请求中缺少ServiceTicket(简称ST),表明用户尚未经过身份验证。
2. **重定向至CAS服务器**:CAS客户端会将用户重定向到CAS服务器进行身份验证,并携带用户的请求URL作为参数(service参数)。
3. **用户认证**:CAS服务器接收到来自用户的认证请求后,引导用户进入登录页面。
用户输入用户名和密码进行登录,若身份验证成功,则CAS服务器通过HTTPS协议返回一个TGC(Ticket-Granting Cookie)给浏览器。
4. **发放ServiceTicket**:CAS服务器生成一个随机的ServiceTicket(简称ST),并将用户重定向回CAS客户端。
5. **验证ServiceTicket**:CAS客户端收到ST后,向CAS服务器验证ST的有效性。
如果验证通过,则允许用户访问受保护资源。
6. **传输用户信息**:CAS服务器验证ST通过后,将用户的相关认证信息发送给CAS客户端。
通过以上步骤,CAS实现了单点登录的功能,极大地提升了用户体验和系统的安全性。
### 四、CAS与HTTPS在配置CAS服务器时,可以选择使用HTTPS协议来增强通信的安全性。
如果选择HTTPS协议,则需要在服务器上配置CAS证书。
证书的创建和导入过程可以参考以下链接:[http://m.blog..net/zrk1000/article/details/51166603](http://m.blog..net/zrk1000/article/details/51166603)### 总结本文详细介绍了如何配置CAS单点登录服务,并重点讲解了如何利用Java代码实现CAS的配置,包括使用数据库进行登录验证的具体步骤。
同时,还阐述了CAS的基本工作原理,帮助读者更好地理解CAS的工作流程和技术细节。
2025/6/15 19:47:19 293KB
1
技术支持:晓晓工作室开发语言:C#开发工具:MicrosoftVisualStudio2008数据库选择:SQLServer2005数据库名:Stu_Imfornation.mdf数据库中包括的表:1.Student——学生基本信息表2.KeCheng——课程表设计3.Class——班级信息表4.Score——学生成绩表5.User——系统管理者信息表6.ZhengZ——(政治面貌)表7.Bangan——(班干)表功能模块:一.教师管理二.学生管理三.政治面貌查询四.班干信息查询五.成绩查询六.课程查询教师管理包括模块功能:1.添加新班级2.添加学生信息3.修改学生信息4.删除学生信息5.查询课程6.查询成绩7.查询班干信息8.查询学生政治面貌9.管理个人信息(修改登录名、密码)学生管理:1.选择课程2.查询课程3.查询成绩4.查询班干信息5.查询学生政治面貌6.管理个人信息(修改登录名、密码)
2025/6/4 21:38:20 5.67MB 学生信息查询
1
CLASS文件直接修改工具,相当好用,大家可以试试哟!
2025/6/1 10:02:26 2MB CLASS
1
Laravel购物车Laravel一个简单的shoppingcart实现。
安装通过安装软件包。
从终端运行Composerrequire命令:composerrequiregloudemans/shoppingcart如果您使用的是Laravel5.5,那么这就是所有要做的事情。
如果您仍使用Laravel5.4,则最后的步骤是添加程序包的服务提供者并为程序包加上别名。
为此,请打开您的config/app.php文件。
将新行添加到providers数组:Gloudemans\Shoppingcart\ShoppingcartServiceProvider::class并可以选择向aliases数组添加新行:'Cart'=>Gloudemans\Shoppingcart\Facades\Cart::class,现在,您可以开始在应用程序中使用
2025/5/7 4:30:06 24KB PHP
1
ArtLibraryAngular该项目是使用版本11.2.1生成的。
开发服务器为开发服务器运行ngserve。
导航到http://localhost:4200/。
如果您更改任何源文件,该应用程序将自动重新加载。
代码脚手架运行nggeneratecomponentcomponent-name生成一个新的组件。
您还可以使用nggeneratedirective|pipe|service|class|guard|interface|enum|module。
建造运行ngbuild来构建项目。
构建工件将存储在dist/目录中。
使用--prod标志进行生产构建。
运行单元测试运行ngtest通过执行单元测试。
运行端到端测试运行nge2e以通过执行端到端测试。
进一步的帮助要获得有关AngularCLI的更多帮助,请使用nghelp或查看“
2025/4/27 15:03:06 184KB TypeScript
1
第一部分Python语言第1章Python简介1.1运行Python1.2变量和算术表达式1.3条件语句1.4文件输入和输出1.5字符串1.6列表1.7元组1.8集合1.9字典1.10迭代与循环1.11函数1.12生成器1.13协程1.14对象与类1.15异常1.16模块1.17获得帮助第2章词汇和语法约定2.1行结构和缩进2.2标识符和保留字2.3数字字面量2.4.字符串字面量2.5容器2.6运算符、分隔符及特殊符号2.7文档字符串2.8装饰器2.9源代码编码第3章类型与对象3.1术语3.2对象的身份与类型3.3引用计数与垃圾收集3.4引用与复制3.5第一类对象3.6表示数据的内置类型3.6.1None类型3.6.2数字类型3.6.3序列类型3.6.4映射类型3.6.5集合类型3.7表示程序结构的内置类型3.7.1可调用类型3.7.2类、类型与实例3.7.3模块3.8解释器内部使用的内置类型3.8.1代码对象3.8.2帧对象3.8.3跟踪对象3.8.4生成器对象3.8.5切片对象3.8.6Ellipsis对象3.9对象行为与特殊方法3.9.1对象的创建与销毁3.9.2对象字符串表示3.9.3对象比较与排序3.9.4类型检查3.9.5属性访问3.9.6属性包装与描述符3.9.7序列与映射方法3.9.8迭代3.9.9数学操作3.9.10可调用接口3.9.11上下文管理协议3.9.12对象检查与dir()第4章运算符与表达式4.1数字操作4.2序列操作4.3字符串格式化4.4高级字符串格式化4.5字典操作4.6集合操作4.7增量赋值4.8属性(.)运算符4.9函数调用()运算符4.10转换函数4.11布尔表达式与真值4.12对象的比较与身份4.13运算优先级4.14条件表达式第5章程序结构与控制流5.1程序结构与执行5.2执行条件语句5.3循环与迭代5.4异常5.4.1内置异常5.4.2定义新异常5.5上下文管理器与with语句5.6断言与__debug__第6章函数与函数编程6.1函数6.2参数传递与返回值6.3作用域规则6.4函数对象与闭包6.5装饰器6.6生成器与yield6.7协程与yield表达式6.8使用生成器与协程6.9列表包含6.10生成器表达式6.11声明式编程6.12lambda运算符6.13递归6.14文档字符串6.15函数属性6.16eval()、exec()和compile()函数第7章类与面向对象编程7.1class语句7.2类实例7.3范围规则7.4继承7.5多态动态绑定和鸭子类型7.6静态方法和类方法7.7特性7.8描述符7.9数据封装和私有属性7.10对象内存管理7.11对象表示和属性绑定7.12__slots__7.13运算符重载7.14类型和类成员测试7.15抽象基类7.16元类7.17类装饰器第8章模块、包与分发8.1模块与import语句8.2从模块导入选定符号8.3以主程序的形式执行8.4模块搜索路径8.5模块加载和编译8.6模块重新加载和卸载8.7包8.8分发Python程序和库8.9安装第三方库第9章输入与输出9.1读取命令行选项9.2环境变量9.3文件和文件对象9.4标准输入、输出和错误9.5print语句9.6print()函数9.7文本输出中的变量插入9.8生成输出9.9Unicode字符串处理9.10UnicodeI/O9.10.1Unicode数据编码9.10.2Unicode字符特性9.11对象持久性与pickle模块第10章执行环境10.1解释器选项与环境10.2交互式会话10.3启动python应用程序10.4站点配置文件10.5用户站点包10.6启用新功能10.7程序终止第11章测试、调试、探查与调优11.1文档字符串和doctest模块11.2单元测试和unittest模块11.3Python调试器和pdb模块11.3.1调试器命令11.3.2从命令行进行调试11.3.3配置调试器11.4程序探查11.5
2025/4/25 17:28:21 26.74MB python django web 参考
1
由于项目的需要,参照这儿这儿朋友的一些原码写的一个基于Socket的FTP登陆Class. 修正点'   改正了原Class不能正常运行Linux系Ftp的BUG   可能实行PortMode数据传送   加强了接口.调用参照'curFtpClent=newFtpClient();//HostURLcurFtpClent.HostUrl=this._NfitsConfigDataCopy.DownloadURI;//サーバのサーバフォルダcurFtpClent.RemotesubDir=genreInfo.GetDownDir();//ログインユーザcurFtpClent.LoginUser=this._NfitsConfigDataCopy.DownloadUser;//curFtpClent.PassWord=this._NfitsConfigDataCopy.DownloadPassword;curFtpClent.LocalDir=genreInfo.ContentTempDirectory;curFtpClent.PasvMode=(this._NfitsConfigDataCopy.FtpPASV?FtpDataTransMode.Pasv:FtpDataTransMode.Port);//取得ファイルリストを取得するcurFileCount=curFtpClent.DownLoad();curFtpClent.DisConnect();
2025/4/15 17:58:10 20KB FtpClient socket C#
1
开发语言:C#开发工具:MicrosoftVisualStudio2008数据库选择:SQLServer2005数据库名:Stu_Imfornation.mdf数据库中包括的表:1.Student——学生基本信息表2.KeCheng——课程表设计3.Class——班级信息表4.Score——学生成绩表5.User——系统管理者信息表6.ZhengZ——(政治面貌)表7.Bangan——(班干)表功能模块:一.教师管理二.学生管理三.政治面貌查询四.班干信息查询五.成绩查询六.课程查询教师管理包括模块功能:1.添加新班级2.添加学生信息3.修改学生信息4.删除学生信息5.查询课程6.查询成绩7.查询班干信息8.查询学生政治面貌9.管理个人信息(修改登录名、密码)学生管理:1.选择课程2.查询课程3.查询成绩4.查询班干信息5.查询学生政治面貌6.管理个人信息(修改登录名、密码)
2025/4/5 16:07:06 5.67MB 学生信息查询
1
注意:文件夹名称必须英文,否则点击地图的时候数据会出错。
模板默认时间是黑夜白天方法:首页找到id为background然后设置class为“day”background-position:1px-8197.08px;若是不明白的话,可以看下更多饿了么网站模板讲解,http://www.sucaihuo.com/。
更多精品模板:http://www.sucaihuo.com/templates
2025/3/4 10:26:57 4.08MB 订餐模板 饿了么源码
1
我整理了一下,把ZIP包的原码重新编译,不要ant.jar,将压缩和解压放在ZipTool.class包中支持中文文件名,支持针对目录压缩,做了上传后自动解压测试!特点:一、自有原码不依赖ant.jar二、支持中文文件名(压缩和解压都支持)三、支持对目录压缩
2025/2/21 18:24:39 88KB java ZIP 上传
1
共 205 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡