首页 > 编程知识 正文

微服务统一入口,客户端单点登录

时间:2023-05-06 13:53:23 阅读:230984 作者:3060

关于CAS

CAS是一种单点登录开源框架,遵循apache2.0协议,代码托管在github.com/apereo/cas上。
而单点登录(SSO, Single Sign On)可简单理解为当用户在一个应用上登录了,其他被授权信任的关联应用不用再登录。
比如在同一个浏览器中登录了天猫,再打开淘宝网站时会自动登录,无需单独输用户名密码或扫二维码。以下简单说明下CAS的部署与测试结果。

本地测试环境 jdk8tomcat8.5gradle-4.3.1cas4.2.7 下载及编译cas $wget "https://github.com/apereo/cas/archive/v4.2.7.tar.gz"$tar -zxf v4.2.7.tar.gz$cd cas-4.2.7/cas-server-webapp$gradle build

编译完成后可在当前路径的build/libs/找到编译打包出来的war文件cas-server-webapp-4.2.7.war;将其重命名为cas.war后,复制到tomcat的web工作目录webapps/下。

tomcat ssl证书配置

具体流程可参考网上资料,这里暂不展开讨论。配置好ssl证书后,在tomcat目录下的conf/server.xml增加类似如下配置:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/Users/apple/Documents/cas/castestkey" keystorePass="xxxx"/> 修改hosts

假设测试环境为本机,我们除了启动一个cas server,还将启动启动两个application server用于单点登录测试。以下为这三个节点的本地host配置:

127.0.0.1 sso.cas.com127.0.0.1 app1.cas.com127.0.0.1 app2.cas.com 访问cas服务

tomcat起来后,我们可以这样访问cas服务:https://sso.cas.com:8443/cas/login
登录界面如下所示:

编译并运行测试服务

我的测试代码基于这源码项目进行了部分修改:https://github.com/willwu1984/springboot-cas-shiro。
对项目通过mvn package命令完成打包后, 在》/target下找到可执行文件cas-0.0.1-SNAPSHOT.jar。
启动测试服务:

$java -jar target/cas-0.0.1-SNAPSHOT.jar// ...2018-07-13 15:32:04.542 INFO 72755 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 18091 (http)2018-07-13 15:32:04.547 INFO 72755 --- [ main] cas.Application : Started Application in 5.087 seconds (JVM running for 5.65)

这时我们浏览器访问 http://app1.cas.com:18091/ , 会发现页面首先被重定向到cas登录认证页面:

https://sso.cas.com:8443/cas/login?service=http://app1.cas.com:18091/shiro-cas

因为当前并没真正接入数据库,可输入默认用户名:密码(casuser:Mellon)进行测试, 这时会跳转回到测试服务的主页:

这时我们运行另外一个测试应用服务,假设地址为 http://app2.cas.com:18092/。
在同一个浏览器中访问该地址时,会发现已经自动完成登录并进入主界面。

如何使用CSS设置div半透明的效果

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。