引言
随着互联网技术的发展,用户对于系统登录的便捷性要求越来越高。单点登录(Single Sign-On,简称SSO)应运而生,它允许用户在多个应用程序中使用同一组凭证进行登录。CAS(Central Authentication Service)是一个广泛使用的开源单点登录解决方案。本文将为您详细讲解如何轻松掌握CAS单点登录,从部署到环境搭建的全过程。
环境搭建
1. 系统要求
在开始之前,请确保您的服务器满足以下要求:
- 操作系统:Linux(推荐使用CentOS或Ubuntu)
- 服务器软件:Apache或Nginx
- 数据库:MySQL或PostgreSQL
- Java环境:Java 8及以上版本
2. 安装Java
以CentOS为例,使用以下命令安装Java:
sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
3. 安装Apache或Nginx
以CentOS为例,使用以下命令安装Apache:
sudo yum install httpd
以Ubuntu为例,使用以下命令安装Nginx:
sudo apt-get install nginx
4. 安装数据库
以CentOS为例,使用以下命令安装MySQL:
sudo yum install mysql-server
以Ubuntu为例,使用以下命令安装PostgreSQL:
sudo apt-get install postgresql
5. 安装CAS
从CAS官网下载最新版本的CAS,解压到服务器上:
wget https://cas.org/downloads/cas/5.3.6/cas.war
unzip cas.war
将解压后的cas目录移动到Apache或Nginx的web根目录下:
sudo mv cas /var/www/html/
配置Apache或Nginx,将cas目录设置为虚拟主机:
sudo nano /etc/httpd/conf.d/cas.conf
添加以下内容:
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName cas.example.com
DocumentRoot /var/www/html/cas
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
重启Apache或Nginx服务:
sudo systemctl restart httpd
# 或者
sudo systemctl restart nginx
部署CAS
1. 配置数据库
进入CAS的conf目录,编辑cas-server.properties文件:
sudo nano /var/www/html/cas/conf/cas-server.properties
找到以下内容,并修改为您的数据库配置:
# 数据库配置
cas.jdbc.datasource.url=jdbc:mysql://localhost:3306/cas
cas.jdbc.datasource.username=root
cas.jdbc.datasource.password=root
cas.jdbc.datasource.driverName=com.mysql.jdbc.Driver
2. 创建数据库和表
在MySQL或PostgreSQL中创建名为cas的数据库,并执行以下SQL语句创建表:
CREATE TABLE cas_user (
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
enabled BOOLEAN NOT NULL,
PRIMARY KEY (username)
);
CREATE TABLE cas_roles (
username VARCHAR(255) NOT NULL,
role VARCHAR(255) NOT NULL,
PRIMARY KEY (username, role)
);
3. 初始化用户和角色
在cas-server.properties文件中,找到以下内容,并添加以下用户和角色:
# 用户和角色
cas.user.username=admin
cas.user.password=123456
cas.user.roles=ROLE_ADMIN
cas.role.ROLE_ADMIN=ROLE_ADMIN
重启CAS服务:
sudo systemctl restart httpd
# 或者
sudo systemctl restart nginx
集成CAS
1. 配置客户端应用
在客户端应用的web.xml文件中,添加以下配置:
<filter>
<filter-name>CASAuthenticationFilter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://cas.example.com/cas/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>client.example.com</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CASAuthenticationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2. 验证登录
在客户端应用的登录页面,跳转到CAS登录页面:
String casLoginUrl = "https://cas.example.com/cas/login?service=http://client.example.com/login";
response.sendRedirect(casLoginUrl);
3. 登录成功
登录成功后,CAS会将用户信息传递给客户端应用,您可以根据需要处理这些信息。
总结
通过以上步骤,您已经成功搭建了一个基于CAS的单点登录系统。在实际应用中,您可以根据需要配置更多的功能,如权限管理、单点登出等。希望本文能帮助您轻松掌握CAS单点登录,为您的项目带来便利。
