简介:
### 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
简单地实现播放器功能。
使用MediaPlayer,简单的多线程编程,使用Handler更新UI,简单的多线程编程,使用Handler更新UI,使用Service与Activity进行通信
2024/12/8 21:09:12 2.64MB Android 源码 播放器
1
packagecom.example.wzq;importjava.util.ArrayList;importjava.util.List;importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;importcom.example.wzq.MyInfo.MyInfoActivity;importcom.example.wzq.gameview.WzqGame;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.os.Parcelable;importandroid.app.Activity;importandroid.content.Intent;importandroid.graphics.Color;importandroid.support.v4.view.PagerAdapter;importandroid.support.v4.view.ViewPager;importandroid.support.v4.view.ViewPager.OnPageChangeListener;importandroid.view.KeyEvent;importandroid.view.Menu;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.ImageView;importandroid.widget.TextView;importandroid.widget.ImageView.ScaleType;importandroid.widget.Toast;publicclassMainActivityextendsActivityimplementsOnClickListener{ privateViewPagerviewPager; privateListimageViews; //滑动的图片集合 privateString[]titles;//图片标题 privateint[]imageResId;//图片ID privateListdots;//图片标题正文的那些点集合 privateTextViewtv_title; privateintcurrentItem=0;//当前图片的索引号 Intentintent=newIntent(); privateScheduledExecutorServicescheduledExecutorService; //切换到当前显示的图片 privateHandlerhandler=newHandler(){ @Override publicvoidhandleMessage(Messagemsg){ viewPager.setCurrentItem(currentItem); } }; //定义两种颜色设置 staticfinalintCOLOR1=Color.parseColor("#787878"); staticfinalintCOLOR2=Color.parseColor("#ffffff"); //定义四个按钮切换按钮 privateButtonstart_btn=null; privateButtonbluetooth_btn=null; privateButtonmyinfo_btn=null; privateButtonfinish_btn=null; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //生成滚动图片 initImageFlow(); Viewview_
2024/8/21 22:37:40 8.95MB android 五子棋源码
1
hive-hbase-handler-1.2.1.jar解决hive1.2.1,hbase不兼容情况!
2024/6/30 12:21:21 177KB hive hbase
1
Netty在Android开发中的应用实战系列(一)———搭建服务端与客户端:https://azhon.blog.csdn.net/article/details/100569489Netty在Android开发中的应用实战系列(二)———Encoder|Decoder|Handler的使用:https://azhon.blog.csdn.net/article/details/100831777Netty在Android开发中的应用实战系列(三)———心跳处理|断线重连:https://azhon.blog.csdn.net/article/details/100941312Netty在Android开发中的应用实战系列(四)———粘包|拆包处理:https://azhon.blog.csdn.net/article/details/101039462
2024/4/16 1:58:52 4.43MB netty tcp socket
1
将Google_breakpad中Exception_Handler部分提取出来打包封装成动态链接库,在原代码基础上增加宏定义,以及导出函数代码
2024/2/19 9:43:53 44.44MB breakpad  动态链接库 .dll
1
hive-anttasks.jarhive-cli.jarhive-common.jarhive-contrib.jarhive-hbaseec.jarhive-hbase-handler.jarhive-hwi.jarhive-jdbc.jarhive-metastorejarhive-serde.jarhive-service.jarhive-shims.jarhadoop-core-1.0.4.jar
2024/1/18 3:29:53 22.77MB jar
1
基于TCP~socket,Android客户端与PC通信,客户端源码。
已经测试,可用。
附带apk,和网络调试助手,方便测试。
只需提供服务器的IP和端口号,即可通信。
客户端:一次连接,可发送多次数据。
重点是客户端时时接收服务器端发送来的数据。
采用Handler和Thead结合。
2023/12/23 6:41:40 2.41MB Android socket TCPIP 客户端
1
Android利用Timer和Handler实现倒计时功能,包含暂停倒计时、停止倒计时
2023/12/8 15:09:30 22KB 异步任务
1
刚要准备读研究生,暑假期间留校,但是老师也不怎么管我们,索性我就把本科的东西整理一下。
无聊中。
如果各位有什么兼职啥的能不能帮我找一个啊。
这段时间自己写的一段代码,是安卓中最常见的操作:客户端向服务器发出请求,服务器根据请求信息,将数据库中的数据封装发往客户端,客户端将数据解析,显示在listview中。
我的本意是仿照网易新闻客户端做成他那样的,图文并茂的形式,因此在数据库中还有一项是存储了图片的地址。
先看客户端部分:在这段代view码中主要是操作是,通过滑动到最下方使得客户端向服务器发出http请求,客户端接收服务器发回来的数据并将数据进行解析,通过Handler这个类来动态更新listview。
2023/10/4 7:36:47 4.29MB android listview 图片 数据
1
共 33 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡