springboot项目使用cas进行单点登录-服务器端实现

Posted on 2020-02-20 16:47  写程序到老  阅读(2127)  评论(1编辑  收藏  举报

说明 :

1:实现目标,多个springboot项目,使用cas 实现单点登录。

2:cas使用cas-overlay-template-5.3版本 springboot 2.0 tomcat9 jdk1.8 开发平台 idea

详细过程

重要配置:先记录下:

application.properties 里配置

cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true

还有一个 HTTPSandIMAPS-10000001.json 添加http, 这个会影响 客户端使用http访问

{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "^(https|http|imaps)://.*",
  "name" : "HTTPS and IMAPS",
  "id" : 10000001,
  "description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.",
  "evaluationOrder" : 10000
}

 

1:下载 cas-overlay-template-5.3

下载地址:https://github.com/apereo/cas-overlay-template/tree/5.3

,然后解压到你想放的地址

 

 

2:导入idea中,什么都不用修改,打包,放入到本地tomcat下,启动tomcat ,就可以看到登录页面,默认账号只有一个

 

 

casuser:Mellon. 到这一步,算是和cas有个初步的印象。

进行一些修改,变成自己想要的模样

3:使用数据库用户

添加jdbc依赖,不要插错位置,在pom里有一段注释很清楚的写着:

<!--
                ...Additional dependencies may be placed here...
                -->

然后在这里插入三个依赖包:

 <!-- https://mvnrepository.com/artifact/org.apereo.cas/cas-server-support-jdbc -->
                <dependency>
                    <groupId>org.apereo.cas</groupId>
                    <artifactId>cas-server-support-jdbc</artifactId>
                    <version>${cas.version}</version>
                </dependency>
                <!-- https://mvnrepository.com/artifact/org.apereo.cas/cas-server-support-jdbc-drivers
                 通过mvn命令添加的
                -->
                <dependency>
                    <groupId>org.apereo.cas</groupId>
                    <artifactId>cas-server-support-jdbc-drivers</artifactId>
                    <version>${cas.version}</version>
                    <scope>runtime</scope>
                </dependency>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.46</version>
                </dependency>

4:重新打包

就会发现,一直在downloading downloaded...慢,一直等到打包成功,因为默认的下载路径应该是国外服务器,所以特别的慢,于是改下maven setting里修改,配置到阿里云镜像,

 <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf> 
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>
    <mirror>
      <id>nexus-public-snapshots</id>
      <mirrorOf>public-snapshots</mirrorOf>
      <url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url>
</mirror>

再重新打包,发现特别的快,而且下载了很多jar,但还是没有成功,报错此文件找不到,于是自己下载,手动加载到本地库(这个应该都很熟悉了吧,搜索一大把的有)

 

5:修改项目的application.properties 文件,注掉默认的用户,添加数据库配置,这样再使用tomcat访问,用户就是自己数据库里配置的了。

##
# CAS Authentication Credentials
#
#cas.authn.accept.users=casuser::Mellon

# add db infor
cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=root
cas.authn.jdbc.query[0].sql=select * from user where username=?
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver

 6:继续修改,之前登录页面一直有 两个warning,一个是提示要使用https,一个是要使用数据库,数据库的我们已经实现了,现在修改https

要实现https,要有keystore,使用

keytool -genkey -alias cas -keyalg RSA -keysize 2048 -keypass 123456 -storepass 123456 -keystore D:/angin.keystore -dname "CN=localhost,OU=angiiin.com,O=angiiiin,L=TianJin,ST=TianJin,C=CN"

生成后 配置tomcat  server.xml,同时把8080商品的http连接器注掉,这样再启动tomcat登录就可以使用https了。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="D:/angiiiin.keystore"
                         type="RSA" certificateKeystoreType="JKS" certificateKeystorePassword="123456"/>
        </SSLHostConfig>
 </Connector>

Copyright © 2024 写程序到老
Powered by .NET 8.0 on Kubernetes