CAS单点登录

CAS单点登录总结一、服务端搭建1.安装JDK。

2.安装Tomcat。

安装版本Tomcat7.0.3.在Tomcat上配置SSl(1)生成证书。

在C盘根目录下建立子文件夹“Keys”,用于存放证书。

在JDK安装文件夹下的bin文件夹(C:\ProgramFiles\Java\jre1.8.0_60\bin)下打开“命令窗口”。

(2)执行命令“keytool -genkey -alias tomcat -keyalg RSA -storepass changeit -keystore c:\keys\.keystore -validity3600”创建证书。

(3)将证书导入的JDK的证书信任库中第一步:导出证书。

执行命令“keytool -export -trustcacerts -alias tomcat -filec:\keys\tomcat.cer -keystore c:\keys\.keystore -storepasschangeit”将证书导出到Keys文件夹。

第二步:将证书导入到JDK证书信任库。

执行命令“keytool -import -trustcacerts -alias tomcat -filec:\keys\tomcat.cer -keystore "C:\ProgramFiles\Java\jre7\lib\security\cacerts" -storepass changeit”。

系统询问是否信任此证书,回答“y”4、配置server.xml文件用文本编辑器管理员身份运行,打开Tomcat7.0下的server.xml文件(C:\ProgramFiles\Apache Software Foundation\Tomcat 7.0\conf\ser.xml)插入以下配置内容:<Connectorport="8443"protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS"keystoreFile="C:/Keys/.keystore"keystorePass="changeit" />如图:测试配置是否成功:重启Tomcat.打开浏览器,测试http://localhost:8080,和http://localhost:8443看到下图说明配置成功:若出现以下页面,选择继续浏览:二、安装配置CAS1.下载CAS,从CSDN上找的的cas-server-3.5.2下载解压后在“modules”文件夹中找到“cas-server-webapp-3.5.1.war”,将其重命名为“cas.war”2.将“cas.war”拷贝到“C:\Program Files\Apache SoftwareFoundation\Tomcat 7.0\webapps”文件夹下。

稍等一会儿刷新一下,就会看到Tomcat 自动将“cas.war”解压到“cas”文件夹中。

如下图:3.测试CAS输入localhost:8080/cas/login,出现以下页面:CAS4.0以前默认账号和密码是相同的。

输入账号密码,admin登录:输入:http://localhost:8080/cas/logout注销登录。

三.搭建.NET下的CAS服务由于在官网上提供的.NET CAS client服务下载地址已失效。

在CSDN上可以找到具体.NET CAS client服务下载。

1.配置 CAS DotNetClient。

运行DotNetClient,(1)将“DotNetCasClient”项目中“Properties”文件夹下的“AssemblyInfo.cs”删除,将“AssemblyInfo.cs.tmpl”重命名为“AssemblyInfo.cs”。

打开将“DotNetCasClient”项目中“Properties”文件夹下的“AssemblyInfo.cs”,将所有“$WCREV$”替换成“0”(或其它表示版本的数字)。

如图:(2)将“ExampleWebSite”项目根文件夹下的“web.config.sample”重命名为“web.config”打开“web.config”文件,找到“casClientConfig”节点,将“casServerLoginUrl”属性设置为“http://localhost:8080/cas/login”,将“casServerUrlPrefix”属性设置为“http://localhost:8080/cas”,将“serverName”属性设置为“http://localhost:3273/ExampleWebSite”。

从“web.config”文件中找到“authentication”节点,将“loginUrl”属性设置为“http://localhost:8080/cas/login”,将“path”属性设置为“/ExampleWebSite/”。

具体配置参考:/zhenyulu/archive/2013/01/22/2870936.html;此时配置基本完成,将将“ExampleWebSite”项目设置为启动项,启动调试,会出现页面重定向的问题。

打开“CASDotNetClient”项目中的“\Utils\HttpUtil.cs”文件,添加如下命名空间:using .Security;using System.Security.Authentication;using System.Security.Cryptography.X509Certificates;在HttpUtil类中增加如下方法:internalstaticbool CheckValidationResult(object sender, X509Certificate certificate,X509Chain chain, SslPolicyErrors errors){returntrue;}在PerformHttpGet方法中添加验证服务器证书回调自动验证代码,添加代码后的PerformHttpGet方法如下:internalstaticstring PerformHttpGet(string url, bool requireHttp200){string responseBody = null;//-- 以下新添加的代码:验证服务器证书回调自动验证ServicePointManager.ServerCertificateValidationCallback = new.Security.RemoteCertificateValidationCallback(CheckValidationResult);//-- 以上为新添加的代码HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()){if (!requireHttp200 || response.StatusCode == HttpStatusCode.OK){using (Stream responseStream = response.GetResponseStream()){if (responseStream != null){using (StreamReader responseReader = new StreamReader(responseStream)){responseBody = responseReader.ReadToEnd();}}}}}return responseBody;}2.测试CAS DotNetClient运行工程,出现如下页面:单击:Authenticated Users Only”连接,系统自动重定向到CAS登录页面;输入用户名、密码(均为“admin”),CAS自动完成登录并重定向回原有网站。

出现问题:经过CAS服务认证后,CAS服务发回请求无响应。

浏览器调显示从CAS请求的Ticket值可以返回并保存到浏览器Cooick中,但是页面路径重定向显示:302 Found重定向状态码,如图:初步判断为跨域不支持,在web.config中配置如下跨域配置:<!--跨域请求配置--><httpProtocol><customHeaders><add name="Access-Control-Allow-Methods"value="OPTIONS,POST,GET"/><add name="Access-Control-Allow-Headers"value="x-requested-with"/><add name="Access-Control-Allow-Origin"value="*" /></customHeaders></httpProtocol>并没有解决问题。

针对以上问题又简单写了一个小Demo来测试页面重定向的问题:首先引用CAS服务的dll:配置好web.config ,主要有以下配置:以下配置都直接加在其根节点下就可以。

<configSections><section name="casClientConfig"type="DotNetCasClient.Configuration.CasClientConfiguratio n, DotNetCasClient"/></configSections><casClientConfigcasServerLoginUrl="http://localhost:8080/cas/login"//自己配置的cas登录路径,下面也一样。

合集下载

CAS单点登录配置全过程

CAS单点登录配置全过程

CAS配置全过程软件工具:1.cas-server-3.3.5-release.zip(CAS服务端)2.cas-client-3.1.10-release.zip(CAS客户端)3.apache-tomcat-7.0.40mons-dbcp-all-1.3-r699049.jar5.mysql-connector-java-5.1.18-bin.jar6.cas-server-jdbc-3.0.5-rc2.jar写在前面的话此配置是根据当前系统,当前的版本,仅供参考,如果有什么其他的问题可以一起研究。

第一节:先走通技术障碍第一步:环境部署1.在Tomcat 根目录下创建一个cas目录。

2.下载CAS服务器并解压,打开cas-server-3.3.5\modules,将cas-server-webapp-3.3.5.war复制到刚刚在Tomcat创建的cas目录下,并重命名为ROOT.war3.修改host文件(C:\Windows\System32\drivers\etc)添加127.0.0.1 注意:如果想在一台PC机上模拟这个单点登录,就必须域名重定向,如果是多台PC机,可以不配置此项,下文有用到,可以用相应PC机的IP代替4.修改Tomcat文件下的server.xml(apache-tomcat-7.0.40\conf\server.xml)添加内容:<Host name="" appBase="cas"unpackWARs="true" autoDeploy="true"></Host>5.启动Tomcat服务,查看信息,(如果有报错,可以根据信息查找错误),打开浏览器,输入:8080如果出现以下界面,则CAS服务端配置成功。

注:这个是最简单的CAS服务,只要输入的用户名跟密码一样,就可以正常登陆,在我们实际开发中,这个验证因为跟数据库作比较,接下来,我们就配置数据库校验。

ruoyi+cas 单点登录原理

ruoyi+cas 单点登录原理

ruoyi+cas 单点登录原理随着互联网的快速发展和信息化的进程,用户管理和身份验证等安全问题成为了企业和机构面临的重要挑战。

为了解决这一问题,单点登录(Single Sign-On,简称SSO)技术应运而生。

ruoyi+cas 单点登录作为一种主流的SSO解决方案,广泛应用于各种网络应用系统中。

本文将对ruoyi+cas 单点登录的原理进行分析与讲解,帮助读者更加深入地了解该技术。

一、ruoyi+cas 单点登录的概念1. 单点登录的定义单点登录是指用户在一次登录后,即可访问多个相互信任的应用系统,而无需多次输入身份验证信息。

这大大提高了用户的使用体验,同时也简化了企业和机构的管理工作。

2. ruoyi+cas 单点登录的特点ruoyi+cas 单点登录是基于CAS(Central Authentication Service)协议开发的,具有以下特点:- 中心化的用户身份认证- 统一的登录界面- 应用系统与CAS服务器之间进行单点登录认证二、ruoyi+cas 单点登录的工作原理1. 传统登录认证流程在没有单点登录的情况下,用户每次需要访问一个新的应用系统时都需要进行登录认证。

这导致了用户需要记住多个不同的账号和密码,极大影响了用户体验。

2. ruoyi+cas 单点登录的认证流程ruoyi+cas 单点登录将用户的身份认证集中到CAS服务器上,实现了用户在第一次登录后即可访问其他应用系统的功能。

其认证流程如下:- 用户通过浏览器访问某一应用系统,但未登录- 应用系统检测到用户未登录,重定向至CAS服务器进行认证- 用户在CAS服务器上输入账号和密码进行认证- 认证成功后,CAS服务器产生票据并将用户重定向回原应用系统- 应用系统通过票据与CAS服务器进行交互,验证用户身份- 验证成功后,用户被认为已登录并可以正常使用应用系统三、ruoyi+cas 单点登录的实现步骤1. CAS服务器的部署首先需要搭建CAS服务器,这可以采用官方提供的CAS Server,也可以使用ruoyi+cas的改进版CAS Server。

cas登出原理

cas登出原理

cas登出原理CAS(Central Authentication Service)是一种用于实现单点登录(SSO)的协议。

它的登出(Logout)原理与登录原理相对应,用于安全地终止用户对各个应用系统的访问授权。

CAS登出的原理主要包括以下几个步骤:1. 用户发起登出请求:当用户在某个应用系统中点击“退出”或“登出”按钮时,该应用系统会向CAS服务器发送登出请求。

2. CAS服务器验证登出请求:CAS服务器接收到登出请求后,会先验证该请求的合法性。

通常情况下,CAS会检查该请求中的用户身份信息是否有效,以确保用户已经通过合法的认证。

3. 向所有应用系统发送登出通知:验证通过后,CAS服务器会向用户之前已经登录过的所有应用系统发送登出通知。

这些通知的形式可以是HTTP请求、SOAP消息、重定向等。

4. 应用系统接收登出通知:当应用系统接收到CAS服务器发送的登出通知后,会根据通知的内容执行相应的登出操作。

一般来说,应用系统会清除该用户在该系统中的登录状态,例如销毁用户的会话、删除用户的登录凭证等。

5. 用户浏览器执行登出操作:与此同时,CAS服务器还会返回一个登出页面给用户浏览器。

该页面通常包含一些登出成功的提示信息,以及一些可选的操作,例如返回首页、重新登录等。

6. 用户浏览器重定向:用户浏览器在接收到登出页面后,根据页面中的重定向指令,可能会自动跳转到某个指定的页面,例如返回首页或登录页面。

需要注意的是,CAS登出并不是立即生效的。

由于CAS是基于会话的认证协议,一般情况下,CAS服务器只能销毁当前会话中的登录状态,而无法直接控制用户浏览器中的其他会话。

因此,用户在某个应用系统中登出后,可能仍然可以通过其他应用系统继续访问一段时间,直到所有会话过期或用户关闭浏览器。

CAS登出的原理基于单点登录的思想,通过集中管理用户的登录状态,实现了用户在多个应用系统中的统一登录和登出。

这种机制不仅提高了用户的使用便利性,还增强了系统的安全性,减少了用户需要记忆和管理的密码数量。

SSO之CAS单点登录详细搭建

SSO之CAS单点登录详细搭建

SSO之CAS单点登录详细搭建:环境说明:同一个机器上环境如下:操作系统:windows7 64位JDK版本:1.7.0_80web容器版本:apache-tomcat-7.0.70 64位服务端:cas-3.5.2.1.zip服务端现在地址:https:///apereo/cas/archive/v4.2.3.zip客户端:cas-client-3.3.3-release.zip客户端下载地址:/cas-clients/eclipse版本:eclipse-jee-luna-SR2-win32-x86_64.zip1、将cas-3.5.2.1 cas-client-3.3.3 标准maven工程导入eclipse 打包编译;2、修改本机C:\Windows\System32\drivers\etc\hosts (CAS单点登录系统是基于JAVA安全证书的https 访问,要使用CAS单点登录必须要配置域名, cas是不能通过ip访问的.)附件-->记事本管理员权限编辑hosts文件,加入如下三行代码后保存。

127.0.0.1 127.0.0.1 127.0.0.1 解释: =>> 对应部署cas server的tomcat,这个虚拟域名还用于服务端证书生成 =>> 对应部署client1客户端应用的tomcat =>> 对应部署client2客户端应用的tomcat3、安全证书配置3.1、管理员模式打开cmd命令窗口,生成证书,在cmd窗口输入以下命令:C:\Users\Administrator>keytool -genkey -alias ssoflyer -keyalg RSA -keysize 1024 -keypass flyer2016 -validity 365 -keystore D:\app\flyer.keystore -storepass flyer2016说明:-alias自定义的别名;-keypass指定证书密钥库的密码;-storepass和前面keypass密码相同,否则下面tomcat配置https会访问失败;-keystore指定证书的位置,例如:D:\app\目录,密钥库名称可以自定义,例如:flyer.keystore特别注意:您的名字与姓氏是什么?该项一定要使用网站的域名,例如: ,Cas Client使用httpclient访问cas server的时候,会严格的检查证书。

CAS单点登录系列

CAS单点登录系列

小蚂蚁-CAS单点登录系列(1)-基础知识1.单点登录1.1.概述单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。

SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

1.2.技术实现机制当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性。

如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。

1.3.要实现SSO需要以下主要的功能所有应用系统共享一个身份认证系统;所有应用系统能够识别和提取ticket信息;应用系统能够识别已经登录过的用户,能自动判断当前用户是否登录过,从而完成单点登录的功能。

其中,统一的身份认证系统最重要,认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。

另外,认证系统还应该对ticket进行效验,判断其有效性。

整个系统可以存在两个以上的认证服务器,这些服务器甚至可以是不同的产品。

认证服务器之间要通过标准的通讯协议,互相交换认证信息,就能完成更高级别的单点登录。

2.数字签名2.1.概念数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。

一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。

2.2.主要功能保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。

数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。

cas单点登录自定义servicevalidate方法 -回复

cas单点登录自定义servicevalidate方法 -回复

cas单点登录自定义servicevalidate方法-回复CAS(Central Authentication Service)是一种常见的单点登录(Single Sign-On)解决方案,它通过集中验证用户身份,实现在不同的服务之间无需重复登录的便利。

虽然CAS已经提供了一套完善的验证流程,但有时我们可能需要根据特定的需求自定义`serviceValidate`方法。

本文将逐步介绍如何实现CAS单点登录自定义`serviceValidate`方法,并解释其作用,以及如何应用于实际项目中。

第一步:了解CAS验证流程在开始自定义`serviceValidate`方法之前,我们首先需要了解CAS的验证流程。

以下是一般情况下CAS的验证流程:1. 用户打开客户端应用程序,并尝试访问需要登录的资源。

2. 客户端应用程序将用户重定向到CAS服务器。

3. CAS服务器显示登录页面,用户在该页面输入用户名和密码。

4. CAS服务器验证凭证的正确性,并生成一个票据(ticket)。

5. CAS服务器将用户重定向回客户端应用程序,并将票据附加在URL中。

6. 客户端应用程序接收到票据后,将其发送给CAS服务器进行验证。

7. CAS服务器对票据进行验证,验证通过后返回用户信息给客户端应用程序。

8. 客户端应用程序使用返回的用户信息进行授权操作,允许用户访问资源。

在这个流程中,`serviceValidate`方法负责对票据进行验证,并返回用户信息。

第二步:CAS服务端配置要自定义`serviceValidate`方法,我们首先需要对CAS服务端进行配置。

假设我们已经搭建好了CAS服务端,并且熟悉CAS的基本配置。

首先,我们需要编辑`cas.properties`文件,该文件包含了CAS服务端的配置信息。

在该文件中,找到以下配置项:cas.service.ticket.registry.core.ticketCatalog=org.apereo.cas.ticket. DefaultTicketCatalog将上述配置项替换为:cas.service.ticket.registry.core.ticketCatalog=org.apereo.cas.ticket.r egistry.DefaultTicketRegistry这将启用默认的票据注册,以便我们在自定义`serviceValidate`方法中使用。

cas sso原理

cas sso原理
CAS(CentralAuthenticationService)是一种单点登录(SSO)协议,用于在多个应用程序和服务之间进行身份验证和授权。

CAS SSO 通过一个中央认证服务器来管理用户身份验证和权限控制。

CAS SSO的工作原理如下:
1. 用户向应用程序发出身份验证请求。

2. 应用程序重定向用户到CAS服务器。

3. CAS服务器要求用户提供用户名和密码进行身份验证。

4. 如果用户提供的凭据正确,CAS服务器会创建一个票据(ticket)并将其返回给用户的浏览器。

5. 用户的浏览器将票据发送回应用程序。

6. 应用程序将票据发送给CAS服务器进行验证。

7. 如果票据有效,CAS服务器会向应用程序返回用户的身份信息。

8. 应用程序可以使用该信息对用户进行授权,并提供相应的服务或资源。

CAS SSO的优点在于,用户只需要登录一次即可访问多个应用程序和服务,无需每次都输入用户名和密码。

同时,CAS SSO也提供了更高的安全性,因为所有的身份验证和授权都由中央认证服务器进行管理和控制。

- 1 -。

CAS实现SSO单点登录原理

CAS实现SSO单点登录原理1. CAS 简介简单的 SSO 的体系中,会有下⾯三种⾓⾊:1 , User (多个)2 , Web 应⽤(多个)3 , SSO 认证中⼼( 1 个)虽然 SSO 实现模式千奇百怪,但万变不离其宗:1 Web 应⽤不处理 User 的登录,否则就是多点登陆了,所有的登录都在 SSO 认证中⼼进⾏。

2 SSO 认证中⼼通过⼀些⽅法来告诉 Web 应⽤当前访问⽤户究竟是不是张三 / 李四。

3 SSO 认证中⼼和所有的 Web 应⽤建⽴⼀种信任关系, SSO 认证中⼼对⽤户⾝份正确性的判断会通过某种⽅法告之 Web 应⽤,⽽且判断结果必须被 Web 应⽤信任。

1.1. What is CAS ?CAS ( Central Authentication Service )是 Yale ⼤学发起的⼀个企业级的、开源的项⽬,旨在为 Web 应⽤系统提供⼀种可靠的单点登录解决⽅法(属于 Web SSO )。

CAS 开始于 2001 年,并在 2004 年 12 ⽉正式成为 JA-SIG 的⼀个项⽬。

1.2. 主要特性1、开源的、多协议的 SSO 解决⽅案; Protocols : Custom Protocol 、 CAS 、 OAuth 、 OpenID 、 RESTful API 、 SAML1.1 、SAML2.0 等。

2、⽀持多种认证机制: Active Directory 、 JAAS 、 JDBC 、 LDAP 、 X.509 Certificates 等;3、安全策略:使⽤票据( Ticket )来实现⽀持的认证协议;4、⽀持授权:可以决定哪些服务可以请求和验证服务票据( Service Ticket );5、提供⾼可⽤性:通过把认证过的状态数据存储在 TicketRegistry 组件中,这些组件有很多⽀持分布式环境的实现,如: BerkleyDB 、 Default 、 EhcacheTicketRegistry 、 JDBCTicketRegistry 、 JBOSS TreeCache 、 JpaTicketRegistry 、 MemcacheTicketRegistry 等;6、⽀持多种客户端: Java 、 .Net 、 PHP 、 Perl 、 Apache, uPortal 等。

CAS单点登陆配置

CAS服务端配置1.准备环境JDK1.6apache-tomcat-6.0.14cas-server-3.4.22.配置server将cas-server war文件复制到webapps下,启动tomcat,以相同用户名或密登录成功。

3.配置数据库访问方式复制modules下面所有jar文件到cas-server的Web-inf/lib下,并复制class12.jar(oracle 数据库驱动)。

修改配置数据源,在deployerConfigContext.xml中添加数据源。

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><propertyname="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property> <propertyname="url"><value>jdbc:oracle:thin:@localhost:1521:orcl</value></property><property name="username"><value>aip</value></property><property name="password"><value>aip</value></property></bean>修改登录验证方法,在deployerConfigContext.xml中注释原验证方式,改为数据库验证。

cas单点登录配置速成

cas单点登录配置速成服务端配置cas是个好东西,很灵活很好用,但是配置起来很麻烦,网上资料比较零碎。

不弄个三五天根本不知道其中的原理,终于在多天的奋斗中配置成功,现在将配置的一些过程记录下来供大家参考。

cas官方网站/cas下载最新的服务端CAS Server 3.3.3 Final解压后将modules下面的cas-server-webapp-3.3.3.war部署到web服务器,作为单点登录的服务器。

登录的服务器下面很多配置文件,通过配置可以做一些扩展。

修改点1:验证方式使用我们自己的用户表验证cas和当前已有的系统做集成的入口1.修改deployerConfigContext.xml文件添加数据源配置XML/HTML代码1.<bean id="casDataSource" class="mons.dbcp.BasicDataSource">2. <property name="driverClassName">3. <value>com.m ysql.jdbc.Driver</value>4. </property>5. <property name="url">6. <value>jdbc:m ysql://192.168.1.100/ires?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true</value>7. </property>8. <property name="username">9. <value>ires</value>10. </property>11. <property name="password">12. <value>i709394</value>13. </property>14.</bean>定义MD5的加密方式XML/HTML代码1.<bean id="passwordEncoder"2. class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName">3. <constructor-arg value="MD5"/>4.</bean>配置authenticationManager下面的authenticationHandlers属性XML/HTML代码1.<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">2. <property nam e="dataSource" ref="casDataSource" />3. <property nam e="sql" value="select community_password from community_user_info where lower(community_user_munity_user) = lower(?)" />4. <property nam e="passwordEncoder" ref="passwordEncoder"/>5.</bean>修改点2:获取用户信息保存,方便各个客户端可以统一得到用户信息1.定义attributeRepository,通过jdbc查询用户的详细信息,可以把用户表或用户的所属组织机构或角色等查询出来。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档