cas5.3.2单点登录-骨架搭建(一)

news/2024/7/6 1:38:34

原文地址,转载请注明出处: https://blog.csdn.net/qq_34021712/article/details/80871015     ©王赛超 

在多服务统一帐号的应用集中,单点登录是必不可少的。CAS就是成熟的单点登录框架之一。Github地址 https://github.com/apereo/cas。现在我们就通过一系列快速简单的构建方式实现一个简单的单点登录系统集。
首先下载cas,下载最新版本 https://github.com/apereo/cas-overlay-template

域名映射

修改/etc/hosts文件,添加服务端域名(server.cas.com) 以及两个客户端的域名(app1.cas.com , app2.cas.com)
这里写图片描述

编译

解压zip,命令行进去,执行mvn clean package
结束之后会出现 target 文件夹,里面有一个cas.war包,这个war包就是我们要运行的程序。

本地配置tomcat通过https访问

生成keystore

keytool -genkey -alias tomcat -keyalg RSA -validity 3650 -keystore /Users/wangsaichao/Desktop/tomcat.keystore

-alias tomcat :表示秘钥库的别名是tomcat,实际操作都用别名识别,所以这个参数很重要。
-validity 3650 : 表示证书有效期10年。
秘钥库口令 我输入的是 changeit
名字与姓氏输入服务器域名,其它一路回车,最后如果显示正确 输入 ‘y’ 就行了。
tomcat秘钥口令我采用与秘钥库相同,因此也是一路回车。
这里写图片描述
之后可以使用以下命令查看生成秘钥库的文件内容:

keytool -list -keystore /Users/wangsaichao/Desktop/tomcat.keystore 

这里写图片描述

根据keystore生成crt文件

#输入第一步中keystore的密码changeit
keytool -export -alias tomcat -file /Users/wangsaichao/Desktop/tomcat.cer -keystore /Users/wangsaichao/Desktop/tomcat.keystore -validity 3650

这里写图片描述

信任授权文件到jdk

sudo keytool -import -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/security/cacerts -file /Users/wangsaichao/Desktop/tomcat.cer -alias tomcat -storepass changeit

证书库cacerts的缺省口令为changeit ,这也是为什么我上面的密码都是用的它,防止混淆,直接都设成一样的。
这里写图片描述
注意:我在命令的最前面加了 sudo 是因为我的环境是mac 直接操作jdk没有权限。
删除授权文件命令如下,删除证书也需要输入密码:changeit

sudo keytool -delete -alias tomcat -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/security/cacerts

查看cacerts中证书 命令如下:

keytool -list -v -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/security/cacerts

修改tomcat的配置文件server.xml

添加以下内容:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="200" SSLEnabled="true" scheme="https"
           secure="true" clientAuth="false" sslProtocol="TLS"
           keystoreFile="/Users/wangsaichao/Desktop/tomcat.keystore"
           keystorePass="changeit"/>

这里写图片描述

让chrome浏览器信任证书

这里写图片描述
这里写图片描述

启动CAS服务

将第一步编译好的cas.war部署到tomcat中启动,然后访问https://server.cas.com:8443/cas/login 如果提示签名不正确之类的就点击高级/详细信息,继续访问。
这里写图片描述
旁边Static Authentication 提示你:你现在只有一个写死的用户默认账号:casuser 默认密码:Mellon 仅有这一个用户,目前这个服务端只能看看,没什么实际用途。建议您将CAS连接到LDAP、JDBC等。

什么是Overlay

overlay可以把多个项目war合并成为一个项目,并且如果项目存在同名文件,那么主项目中的文件将覆盖掉其他项目的同名文件。使用maven 的Overlay配置实现无侵入的改造cas。

使用Overlay生成真正有用的服务端

新建项目

pom.xml

pom是从解压的cas.war中拷贝出来的,将无用的配置删除。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd ">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-base</artifactId>
    <packaging>war</packaging>
    <version>1.0</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${springboot.version}</version>
                <configuration>
                    <mainClass>org.springframework.boot.loader.WarLauncher</mainClass>
                    <addResources>true</addResources>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <warName>cas</warName>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <recompressZippedFiles>false</recompressZippedFiles>
                    <archive>
                        <compress>false</compress>
                        <manifestFile>${project.build.directory}/war/work/org.apereo.cas/cas-server-webapp${app.server}/META-INF/MANIFEST.MF
                        </manifestFile>
                    </archive>
                    <overlays>
                        <overlay>
                            <groupId>org.apereo.cas</groupId>
                            <artifactId>cas-server-webapp${app.server}</artifactId>
                        </overlay>
                    </overlays>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
            </plugin>
        </plugins>
        <finalName>cas</finalName>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.apereo.cas</groupId>
            <artifactId>cas-server-webapp${app.server}</artifactId>
            <version>${cas.version}</version>
            <type>war</type>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.apereo.cas</groupId>
            <artifactId>cas-server-support-jdbc</artifactId>
            <version>${cas.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apereo.cas</groupId>
            <artifactId>cas-server-support-jdbc-drivers</artifactId>
            <version>${cas.version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.36</version>
        </dependency>
        <!--<dependency>
            <groupId>org.jasig.cas</groupId>
            <artifactId>cas-server-core-authentication</artifactId>
            <version>4.2.7</version>
        </dependency>-->
        <!--<dependency>
            <groupId>org.apereo.cas</groupId>
            <artifactId>cas-server-core-util</artifactId>
            <version>${cas.version}</version>
        </dependency>-->
    </dependencies>

    <properties>
        <cas.version>5.3.2</cas.version>
        <springboot.version>2.0.0.RELEASE</springboot.version>
        <!-- app.server could be -jetty, -undertow, -tomcat, or blank if you plan to provide appserver -->
        <app.server>-tomcat</app.server>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <repositories>
        <repository>
            <id>sonatype-releases</id>
            <url>http://oss.sonatype.org/content/repositories/releases/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
        <repository>
            <id>sonatype-snapshots</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
        <repository>
            <id>shibboleth-releases</id>
            <url>https://build.shibboleth.net/nexus/content/repositories/releases</url>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
</project>

最终项目目录如下:
这里写图片描述
其中application.properties和META-INF文件夹从 css.war 里面拷贝出来,还有log4j2.xml也是从cas.war中拷贝出来的,因为默认的日志生成位置是在/etc/cas/logs下,启动会报错。

修改application.properties

server.ssl.enabled=true
server.ssl.key-store=file:/Users/wangsaichao/Desktop/tomcat.keystore
server.ssl.key-store-password=changeit
server.ssl.key-password=changeit
server.ssl.keyAlias=tomcat

这里写图片描述

在IntelliJ IDEA配置Tomcat

1.点击Run-Edit Configurations…

这里写图片描述

2.添加tomcat

这里写图片描述

3.配置tomcat如下:

这里写图片描述
这里写图片描述

4.第一次启动会出现以下界面,选accept就行了

这里写图片描述
然后访问https://server.cas.com:8443/cas/login,出现登录界面,就可以了,跟之前直接部署cas.war是一样的。


http://www.niftyadmin.cn/n/1217788.html

相关文章

cas5.3.2单点登录-JDBC认证(密码MD5和密码加盐)(二)

原文地址&#xff0c;转载请注明出处&#xff1a; https://blog.csdn.net/qq_34021712/article/details/80956047 ©王赛超 上一章搭建了单点登录的基本骨架&#xff0c;但是它的用户名和密码是写死的。显然&#xff0c;这样是不行的&#xff0c;用户名密码一般都存放…

SDS趋势之二:对象存储将替代文件存储

首先什么是对象存储&#xff1f;对象存储&#xff08;Object Storage&#xff09;是综合了NAS和SAN的优点&#xff0c;同时具有SAN的高速直接访问和NAS的数据共享等优势&#xff0c;提供了高可靠性、跨平台性以及安全的数据共享的存储体系结构。典型应用&#xff1a;网盘、云存…

cas5.3.2单点登录-自定义密码认证(三)

原文地址&#xff0c;转载请注明出处&#xff1a; https://blog.csdn.net/qq_34021712/article/details/80958614 ©王赛超 上一篇博客&#xff0c;我们搞定了从数据库获取信息&#xff0c;并且对密码进行MD5加密 或者 加盐方式处理.假如某些特殊情况下,密码规则不符…

cas5.3.2单点登录-自定义登录验证(四)

原文地址&#xff0c;转载请注明出处&#xff1a; https://blog.csdn.net/qq_34021712/article/details/81144874 ©王赛超 我们在使用SSO单点登录的时候不只是验证一下用户名和密码是否一致,有时候还需要验证一些别的校验,那么这一张讲一下如何自定义验证器。 自定…

设计模式之——抽象工厂模式

2、抽象工厂模式&#xff08;Abstract Factory&#xff09;工厂方法模式有一个问题就是&#xff0c;类的创建依赖工厂类&#xff0c;也就是说&#xff0c;如果想要拓展程序&#xff0c;必须对工厂类进行修改&#xff0c;这违背了闭包原则&#xff0c;所以&#xff0c;从设计角度…

h264打包rtp发送

2019独角兽企业重金招聘Python工程师标准>>> h264拆分成 nalu ---》 int GetAnnexbNALU (NALU_t *nalu) { int pos 0; //一个nal到下一个nal 数据移动的指针 int StartCodeFound 0; //是否找到下一个nal 的前缀 int rewind 0; //判断 前缀所占字节数 3或 4 unsig…

cas5.3.2单点登录-服务端集成shiro权限认证(五)

原文地址&#xff0c;转载请注明出处&#xff1a; https://blog.csdn.net/qq_34021712/article/details/81149019 ©王赛超 所谓单点登录&#xff08;SSO&#xff09;&#xff0c;只当企业用户同时访问多个不同&#xff08;类型的&#xff09;应用时&#xff0c;他们…

SpringMVC数据绑定实例

接收bean RequestMapping(value "/test/query",method RequestMethod.GET)ResponseBodypublic QueryParam getQueryByBean(QueryParam param, Order order) throws JsonProcessingException {System.out.println(objectMapper.writeValueAsString(order));return p…