简介:
### 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
开发工具Web应用程序是独立的.jar和可部署.war(Tomcat),具有FileWalker等功能,带有通过SQL查询进行递归DBUnit导出器SQL编辑器,WebShell和Groovy编辑器安装要求Java8(JDK)阿帕奇Maven网页浏览器用Maven构建使用Mavenmvncleaninstall构建启动应用程序作为JAR运行(参数是可选的)java-Dsqleditor-jdbc-url=jdbc:mysql://localhost:3306/classicmodels\-Dsqleditor-jdbc-url="jdbc:sqlserver://localhost:1433;databaseName=classicmodels"\-Dsqleditor-username=root\-Dsqleditor-passw
2025/5/19 7:47:32 8.84MB Java
1
联络人通过4种方式(API,自定义,首选项和Sqflite)实现Contacts应用程序的扑扑项目。
它包含一些常见的操作,例如对联系人的创建,编辑,搜索和查看操作。
该项目中的联系人未与智能手机中存储的联系人链接。
演示使用Flutter和PHP的应用程序。
使用创建的App徽标对于托管使用的建于跨平台应用开发框架屏幕截图如何使用这个程序。
在首选的虚拟主机上托管包含的示例使用在数据库内部创建表如果您按照上述步骤使用自己的网站,请在编辑以下staticconstString_CONTACT_API_BASE_URL=“”;如果您使用的是phpbackend-中可用的文件,请确保编辑并更改以下内容私人$host=“your_host”;private$db_name=“您的数据库名称”;私人$username=“您的用户名”;private$password=“您的密码”;确保使用您自己的GooglePlaceSearchAPI密钥在编辑以下constStringGOOGLE_PLACE_API_KEY
2025/1/31 13:49:48 3.8MB android php ios sql
1
PHP环境搭建也是一门技术,本文为大家分享一篇PHP语言编写的微信h5斗牛源码服务端环境搭建的图文教程,具有很好的参考价值,希望对大家有所帮助。
首先我们要准备几个必用的东西-1.lunix服务器-2.已备案域名-3.已认证服务号服务器linuxcentos7先安装环境使用宝塔安装环境(www.bt.cn)Nginx1.14mysql5.6php7.1环境安装完,用宝塔导入数据库文件数据库文件导入之后,修改根目录下的两个配置文件修改文件data/conf/db.php'DB_TYPE'=>'mysql','DB_HOST'=>'127.0.0.1','DB_NAME'=>'数据库名','DB_USER'=>'数据库用户','DB_PWD'=>'数据库密码',修改文件auto/php54n/config.php$serverdk='11801';$host='127.0.0.1';$username='数据库用户';$password='数据库密码';$dbname='数据库名';$charset='utf8mb4';$machine_http='http://127.0.0.1:5432/';$url='http://你的域名';配置文件修改之后,登录后台http://域名/admin后台默认帐号admin默认密码www.cxnd.com建议登录之后修改密码服务器开放1-60000端口然后cd/www/wwwroot/你网站的根目录/auto/运行./1.sh启动游戏服务端这里已经全部安装完成,然后是进入后台配置微信公众号进入https://mp.weixin.qq.com,登录微信公众平台,在开发----->基本配置获取开发者ID(AppID)和开发者密码(AppSecret),并设置微信IP白名单,然后在设置----->公众号设置----->功能设置,配置你的业务域名,JS接口安全域名,网页授权域名。
然后进入网站后台填写微信appid和微信key,填完之后,点击保存按钮,然后再点击微信access_token的获取按钮,获取他的access_token。
这里就全部配置完成了。
2025/1/17 10:54:02 129.9MB 棋牌源码
1
python3http.client库实现的登录验证密码程序。
内含多个密码文件。
forserverinip:print("[+]Server:",server)print("[+]Port:",port)print("[+]UsersLoaded:",len(WEAK_USERNAME))print("[+]WordsLoaded:",len(WEAK_PASSWORD))print("[+]Started",timer(),"\n")forIinrange(len(accounts)):work=Tomcatbrute(server,port,path,accounts[I][0],accounts[I][1])work.setDaemon(1)work.start()time.sleep(0.1)print("\n[-]Done-",timer(),"\n")
2024/12/28 15:45:28 18KB 000python3
1
LinuxFTP客户端是Linux操作系统中用于通过FTP(FileTransferProtocol)协议与远程服务器进行交互的工具。
FTP是一种标准网络协议,用于在Internet上可靠地传输文件。
在这个场景中,我们将探讨如何使用Linux命令行中的FTP客户端来执行文件上传、下载、查看目录以及删除文件夹的操作。
1.**FTP客户端的基本使用**:在Linux中,最常用的FTP客户端是`ftp`命令行工具。
要启动它,只需在终端输入`ftp`并跟随服务器的IP地址或域名。
例如:```ftpexample.com```2.**登录与身份验证**:登录时,通常需要提供用户名和密码。
例如:```用户名:your_username密码:your_password```3.**文件上传**:使用`put`命令将本地文件上传到远程服务器。
假设我们有一个名为`localfile.txt`的文件,要将其上传到远程服务器,执行:```putlocalfile.txt```4.**文件下载**:反之,使用`get`命令下载远程文件到本地。
如果远程服务器上有`remotefile.txt`,我们可以这样下载:```getremotefile.txt```5.**查看目录**:`ls`命令用于查看远程服务器的当前目录,而`ls-l`可以显示详细信息。
如果要查看本地目录,可以使用`!ls`:```ls!ls```6.**切换目录**:使用`cd`命令可以在远程服务器的目录结构中导航。
例如,进入名为`documents`的目录:```cddocuments```7.**创建和删除文件夹**:要在远程服务器上创建新目录,可以使用`mkdir`命令。
创建一个名为`newfolder`的目录:```mkdirnewfolder```删除空目录,使用`rmdir`。
例如,删除`newfolder`:```rmdirnewfolder```8.**删除文件**:使用`delete`或`rm`命令删除远程文件。
例如,删除`remotefile.txt`:```deleteremotefile.txt```9.**退出FTP会话**:结束FTP会话,使用`bye`或`quit`命令:```bye```10.**Passive模式**:有时,由于防火墙或NAT设置,主动模式的FTP可能无法工作。
这时,可以使用被动模式,通过在FTP会话中输入以下命令:```passive```11.**SFTP和SCP**:对于更安全的文件传输,可以考虑使用SSHFileTransferProtocol(SFTP)或SecureCopy(SCP)。
SFTP内置于OpenSSH中,使用`sftp`命令;
SCP则通过`scp`命令进行操作。
以上是Linux环境下使用FTP客户端的基本操作。
了解这些技能后,您将能够有效地在Linux系统中管理和维护远程服务器上的文件。
然而,对于更复杂的任务,如自动化脚本,可能需要学习更高级的FTP命令或者使用图形界面的FTP客户端,如FileZilla。
2024/9/15 19:38:56 625KB ftp客户端 linux
1
vistorimagevmwarevistor虚拟带库系统是cofio公司的一款虚拟带库软件。
cofio公司已经被收购,官方网站已经不能访问。
下载地址见附件。
username:rootpassword:password
2024/7/31 6:21:25 82B vistor  image  vmware
1
Django1.9.2websocket实时消息推送服务端主动推送调用send(username,title,data,url)username:用户名title:消息标题data:消息内容,ulr:消息内容ulr
2024/6/29 13:18:12 170KB Django 实时推送 python
1
常见问题及处理方案CPU使用率高的问题通过操作系统命令toptopasglance等查看top进程号,确认是系统进程还是oracle应用进程,查询当前top进程执行的操作和sql语句进行分析。
根据进程号获取正在执行的sqlSELECTa.osuser,a.username,b.address,b.hash_value,b.sql_textfromv$sessiona,v$sqltextb,v$processpwherep.spid=&spidandp.addr=a.paddranda.STATUS='ACTIVE'anda.sql_address=b.addressorderbyaddress,piece;数据库无法连接数据库无法连接,一般可能是如下原因造成:(1)数据库宕了(2)监听异常(3)数据库挂起(4)归档目录满(5)数据库或应用主机的网卡出现问题不能正常工作(6)应用主机到数据库主机的网络出现问题。
1、数据库宕了立即启动数据库。
Startup2、监听异常此时一般体现为:监听进程占用CPU资源大;
d监听日志异常。
此时,立即重启监听,监听重启一般能在1分钟之内完成。
Lsnrctlrestart3、数据库挂起立即重启数据库。
Startup4、归档目录满(1)在没有部署OGG数据同步的情况下,立即清理归档日志文件。
(2)如果部署了OGG数据同步,查看OGG正在读取的归档日志文件,立即清理OGG不再需要的日志文件。
5、数据库或应用主机的网卡出现问题不能正常工作。
立即联系主机工程师处理。
6、应用主机到数据库主机的网络出现问题。
立即联系网络维护人员查看。
CRS/GI无法启动对于10g及11gR1版本的CRS问题1、进入/tmp目录下,看是否产生了crsctl.xxxxx文件如果有的话,看文件内容,一般会提示OCR无法访问,或者心跳IP无法正常绑定等信息。
2、如果/tmp目录下没有crsctl.xxxxx文件此时查看ocssd.log文件,看是否能从中得到有价值的信息。
可能的问题:网络心跳不通。
3、/tmp目录无crsctl.xxxxx且日志中没有报错信息,只有停CRS时的日志信息。
此时可能是RAC两个节点对并发裸设备的访问有问题,此时考虑:(1)停掉两个节点的CRS。
(2)两个节点先同时去激活并发VG,然后再激活VG。
(3)重新启动CRS。
对于11gR2的GI问题分析$GRID_HOME/log/nodename目录下的日志文件,看是否能从中找出无法启动的原因。
常见问题:1、心跳IP不同。
2、ASM实例无法启动。
对CRS的故障诊断和分析,参加本文档中RAC部分的MOS文档.数据库响应慢应急处理步骤:(1)找到占用CPU资源大的sql或者模块,然后停掉此应用模块。
(2)如果属于由于种种原因引起的数据库hang住情况,立即重启数据库,此时重启需要约15分钟时间。
重要说明:如果重启数据库的话,会有如下负面影响:(1)要kill掉所有连接到数据库中的会话,所有会话都会回滚。
(2)立即重启的话,不能获取并保留分析数据库挂起原因的信息,在后续分析问题时,没有足够信息用于分析问题产生的根本原因。
一般正常重启的话,都需要手动获取用于分析数据库重启原因的信息,以便编写分析报告,但是在最长情况下,获取日志信息可能就要40分钟时间。
此时一般做systemstatedump,且如果是rac情况的话,需要2个节点都做,且需要做2次或以上。
常规处理步骤,分如下几种情况处理:(1)所有业务模块都慢。
(2)部分业务模块慢。
(3)数据库hang住。
所有业务模块都慢此时首先查看系统资源,看是否属于CPU资源使用率100%的问题,如果是,参考本章“CPU使用率高的问题”解决办法。
如果系统资源正常,那很可能是数据库hang住了,此时参考数据库Hang部分。
部分业务模块慢分析运行慢的模块的sql语句:(1)看是否是新上的sql。
(2)看执行计划是否高效。
(3)优化运行慢的模块的sql语句。
数据库hang住应急处理方式:重启数据库。
常规处理方式:(1)分析alert日志,看是否能从alert日志中,可以很快找到引起问题的原因。
(2)做3级别的hanganalyze,先做一次,然后隔一分钟以后再做一次。
并分析
442KB oracle
1
packagecom.org.dao.impl;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importorg.springframework.jdbc.core.BeanPropertyRowMapper;importorg.springframework.jdbc.core.PreparedStatementCreator;importorg.springframework.jdbc.core.RowCallbackHandler;importorg.springframework.jdbc.support.GeneratedKeyHolder;importorg.springframework.stereotype.Repository;importcom.org.JdbcTempBaseDao;importcom.org.dao.IUserDao;importcom.org.model.User;@Repository@SuppressWarnings("all")publicclassUserDaoImplextendsJdbcTempBaseDaoimplementsIUserDao{ @Override publicListgetUserList(){ Stringsql="select*fromuser"; finalListlist=newArrayList(); jdbcTemplate.query(sql,newRowCallbackHandler(){ @Override publicvoidprocessRow(ResultSetrs)throwsSQLException{ Useru=newUser(); u.setId(rs.getInt("id")); u.setUsername(rs.getString("username")); u.setPassword(rs.getString("password")); u.setCreateDate(rs.getString("createDate")); u.setModifyDate(rs.getString("modifyDate")); u.setType(rs.getString("type")); list.add(u); } }); returnlist; } @Override publicListgetUserLists(Mapmap){ returnnull; } @Override publicIntegergetUserCount(Mapmap){ Stringsql="selectcount(1)fromUserwhereid=?"; returngetJdbcTemplate().queryForObject(sql,Integer.class,map); } @Override publicUsergetUserById(IntegerprimaryKeyId){ Stringsql="selectid,username,password,createDate,modifyDate,typefromUserwhereid=?";ListuserList=getJdbcTemplate().query(sql,newBeanPropertyRowMapper(User.class),primaryKeyId);if(userList.size()==0){returnnull;}returnuserList.get(0); } @Override publicvoiddelUserById(Int
2024/5/31 21:57:28 18.89MB jdbcTemplate
1
共 51 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡