CAS (3) —— Mac下配置CAS客户端经代理访问Tomcat CAS
CAS (3) —— Mac下配置CAS客户端经代理访问Tomcat CAS
tomcat版本: tomcat-8.0.29
jdk版本: jdk1.8.0_65
nginx版本: nginx-1.9.8
cas版本: cas4.1.2
cas-client-3.4.1
参考来源:
Tomcat (1) —— Mac下配置Tomcat Https/SSL
【高可用HA】Apache (2) —— Mac下安装多个Apache Tomcat实例
【高可用HA】Nginx (1) —— Mac下配置Nginx Http负载均衡(Load Balancer)之101实例
Mac为nginx安装nginx-sticky-module
CAS (1) —— Mac下配置CAS到Tomcat(服务端)
CAS (2) —— Mac下配置CAS到Tomcat(客户端)
目标架构

准备
要搭建上面这个环境会相对复杂,我们需要参照之前的文章准备以下必备的组件或环境:
2个Tomcat服务器作为客户端应用程序服务器(即cas的客户端)
app1.hoau.com:8081/8413(http/https)
app2.hoau.com:8082/8423(http/https)
1个Nginx服务器作为中间层代理转发服务器(后可扩展为LoadBalancer)
proxy.sso.hoau.com:85/?(http/https)
另一个1个带有SSL的Tomcat服务器作为CAS服务器
sso.hoau.com:8083/8433(http/https)
配置
我们在之前的文章中已经实现了通过app1和app2客户端直连CAS服务器,从而实现SSO的目的:
CAS (1) —— Mac下配置CAS到Tomcat(服务端)
CAS (2) —— Mac下配置CAS到Tomcat(客户端)
基于以上的配置web.xml,我们首先需要将两个app的SSO服务器指向nginx proxy(http://proxy.sso.hoau.com:85/cas/login),其中:
APP1: app1.hoau.com:8081/8413(http/https)
CAS Authentication Filter
<init-param>
<param-name>casServerLoginUrl</param-name>
<!--
<param-value>https://sso.hoau.com:8433/cas/login</param-value>
-->
<param-value>http://proxy.sso.hoau.com:85/cas/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>https://app1.hoau.com:8413</param-value>
</init-param>
CAS Validation Filter
<init-param>
<param-name>casServerUrlPrefix</param-name>
<!--
<param-value>https://sso.hoau.com:8433/cas</param-value>
-->
<param-value>http://proxy.sso.hoau.com:85/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>https://app1.hoau.com:8413</param-value>
</init-param>
APP2: app2.hoau.com:8082/8423(http/https)
同上
Nginx Proxy: proxy.sso.hoau.com:85/?(http/https)
修改nginx.conf:
upstream localhost {
#根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。
#同一机器在多网情况下,路由切换,ip可能不同
#ip_hash;
sticky; #Richard: http
#server localhost:8083;
#server localhost:8084; #Richard: https todo
server sso.hoau.com:8433;
#server sso.hoau.com:8443;
}
并开放https Proxy_ByPass
location / {
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
#proxy_pass http://localhost;
proxy_pass https://localhost;
}
* 注意: 在CAS目标服务器为单节点时,sticky参数客户忽略,默认为ip_hash。
测试
我们清空浏览器的cache和cookie,按照下列步骤操作
访问"https://app1.hoau.com:8413/cas1"
系统会将我们重定向到
"http://proxy.sso.hoau.com:85/cas/login"。
输入用户名密码"test01/psw01"
登陆成功
访问"https://app2.hoau.com:8423/cas2"
系统会将我们重定向到
"http://proxy.sso.hoau.com:85/cas/login"。
但是系统不会用"test01/psw01"自动登陆。
* 按照以上步骤,交换app1与app2的操作顺序,发现结果一样,app1与app2均可以自行通过nginx proxy到CAS Server上登陆,但是看似无法共享Ticket
*扩展
问题来了
- 为什么不通过代理直连的时候,SSO正常,但是通过代理就不正常了呢?
怀疑点
- Nginx proxy 没有SSL?
- CAS服务器上的Ticket失效了?
- Client App(Tomcat)--> Proxy(Nginx) --> CAS Server(Tomcat)这条线上什么东西丢了?
请参考另一篇文章
CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解
结束
CAS (3) —— Mac下配置CAS客户端经代理访问Tomcat CAS的更多相关文章
- CAS (7) —— Mac下配置CAS 4.x的JPATicketRegistry(服务端)
CAS (7) -- Mac下配置CAS 4.x集群及JPATicketRegistry(服务端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: ...
- CAS (2) —— Mac下配置CAS到Tomcat(客户端)
CAS (2) -- Mac下配置CAS到Tomcat(客户端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2 cas-clie ...
- CAS (1) —— Mac下配置CAS到Tomcat(服务端)
CAS (1) -- Mac下配置CAS到Tomcat(服务端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2 cas-clie ...
- CAS (8) —— Mac下配置CAS到JBoss EAP 6.4(6.x)的Standalone模式(服务端)
CAS (8) -- Mac下配置CAS到JBoss EAP 6.4(6.x)的Standalone模式(服务端) jboss版本: jboss-eap-6.4-CVE-2015-7501 jdk版本 ...
- CAS (1) —— Mac下配置CAS到Tomcat(服务端)(转)
tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2cas-client-3.4.1 参考来源: CAS实现单点登录(SSO)经典完整教 ...
- Mac下配置多个SSH KEY访问远程Git服务
第一步 生成对应的ssh key 1 后面输入你的用户名 或者 邮箱 2 输入一个独立的ssh key名字 区别之前的名字 第二步 编辑 config文件 在.ssh/目录下面 在config文件配 ...
- Mac下配置Apache Httpd的Https/SSL
Mac下配置Apache Httpd的Https/SSL httpd版本: httpd-2.4.17 jdk版本: jdk1.8.0_65 参考来源: Mac下安装Apache Httpd Mac O ...
- Tomcat (1) —— Mac下配置Tomcat Https/SSL
Tomcat (1) -- Mac下配置Tomcat Https/SSL tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 参考来源: SSL/TLS Config ...
- mac下配置开发环境
常用命令 显示隐藏文件 1 defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder 关闭隐藏文 ...
随机推荐
- swift上传图片
import UIKit import AFNetworking class YJRequest: NSObject { //#pragma mark - 上传图片 func uploadImageW ...
- HDUOJ-------2149Public Sale
Public Sale Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Android开发学习之Gallery和GridView浅析
一.Gallery的简介 Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息.Gallery还可以和ImageSwitcher组件结合使用来 ...
- IntelliJ IDEA 14 拉取SVN maven 多模块项目 部署tomcat 详细图解!
二话不说 进入主题 我们创建空项目实际上是项目空间 进入主界面 想用svn必须先启用它 选择Subversion 拉取 svn项目 你会发现这里检测不到目录 我们进入 File>Seting 里 ...
- 最简单的回射客户/服务器程序、time_wait 状态
下面通过最简单的客户端/服务器程序的实例来学习socket API. echoser.c 程序的功能是从客户端读取字符然后直接回射回去. C++ Code 1 2 3 4 5 6 7 8 9 10 ...
- 自己定义View学习之12/7(进度条之混合模式)
今天重点内容是我们学习自己定义view里面的混合模式.事实上我们的画布就跟photoshop一样.是个图层关系,一层盖着一层.这样就导致有非常多种覆盖模式,这就是我们今天的主题."混合模式& ...
- 将tomcat以普通用户启动
1.为tomcat创建一个专用启动用户 useradd -M -r -d /dev/null -s /sbin/nologin tomcat 2.编译jsvc ① 进入tomcat的bin目录下 ② ...
- libiconv字符集转换库在C#中的使用
<libiconv字符集转换库用法>一文中说到了libiconv能够实现不同字符集的转换. 比方GBK转BIG5等.在项目中由于须要,找到这个库.但是这个库在C#中没有非常好的支持.只是, ...
- CentOS6.4之图解SSH无验证双向登陆配置
配置SSH无登陆验证,在很多场景下是非常方便的,尤其是在管理大型集群服务时,避免了繁琐的密码验证,在安全级别越高的服务器上,通常密码的设置更复杂,配置SSH,不仅可以用密钥保证节点间通信的安全性,同时 ...
- 国外程序员整理的Java资源大全
构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...