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

参考来源:

CAS实现单点登录(SSO)经典完整教程

CAS 4.0 配置开发手册

cas客户端应用实现

使用 CAS 在 Tomcat 中实现单点登录

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(客户端)

目标架构

准备

要搭建上面这个环境会相对复杂,我们需要参照之前的文章准备以下必备的组件或环境:

  1. 2个Tomcat服务器作为客户端应用程序服务器(即cas的客户端)

     app1.hoau.com:8081/8413(http/https)app2.hoau.com:8082/8423(http/https)

    参照Tomcat Cluster、Tomcat SSL和CAS Client

  2. 1个Nginx服务器作为中间层代理转发服务器(后可扩展为LoadBalancer)

     proxy.sso.hoau.com:85/?(http/https)

    参照Nginx Load Balancer与Nginx Sticky Session

  3. 另一个1个带有SSL的Tomcat服务器作为CAS服务器

     sso.hoau.com:8083/8433(http/https)

    参照Tomcat SSL与CAS Server

配置

我们在之前的文章中已经实现了通过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 todoserver 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,按照下列步骤操作

  1. 访问"https://app1.hoau.com:8413/cas1"

    系统会将我们重定向到

     "http://proxy.sso.hoau.com:85/cas/login"。
  2. 输入用户名密码"test01/psw01"

    登陆成功

  3. 访问"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相关推荐

  1. CAS (1) —— Mac下配置CAS到Tomcat(服务端)(转)

    tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2 cas-client-3.4.1 参考来源: CAS实现单点登录(SSO)经典完整 ...

  2. 【高可用HA】Apache (4) —— Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk

    Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk httpd版本: httpd-2.4.17 jk版本: tomcat-connectors-1.2.41 参考 ...

  3. mac下配置进行c和matlab混编

    mac下配置进行c和matlab混编 是用mac的小伙伴有时候有没有感觉很痛苦!遇到什么问题,找相关的解决办法真心不方便,我最近在搞一段程序,要进行c和matlab的混编,可是,在matlab中输入: ...

  4. Mac下的SVN客户端

    转自:http://blog.csdn.net/wanghao725/article/details/51483783 Mac下的SVN客户端也有多个(看下图),但是都需要收费.下面来说一下我用过的几 ...

  5. xmapp 在Mac下配置

    由于要做毕业论文,但是手里只有Mac,所以尝试着在Mac下配置了xmapp,网上看了很多,不够全面. 1下载xampp软件 2,安装完成后,使用下面的命令开始运行 XAMPP.在终端下以系统管理员 r ...

  6. 在Mac环境下系统本身就带有的Apache(阿帕奇服务器)和PHP都预装好了,且合并完成。如果不知道请查看MAC 下配置Apache和PHP

    在Mac环境下系统本身就带有的Apache(阿帕奇服务器)和PHP都预装好了,且合并完成.如果不知道请查看MAC 下配置Apache和PHP 1.创建一个空工程, 新建一个php文件,暂且命名为ind ...

  7. Mac pro配置minIo客户端

    Mac pro配置minIo客户端 学习资料网址:http://docs.minio.org.cn/docs/master/minio-client-complete-guide 以下部分都可以在上述 ...

  8. mac下配置php环境变量配置,怎么给mac电脑添加环境变量

    平常我们使用最多的可能是windows系统,但是也有很多同学喜欢mac电脑.但是对于初次使用mac电脑的朋友来说,配置环境变量可能就成为了一道难题,下面我们就来说说怎么在mac下配置环境变量. (学习 ...

  9. 苹果显示服务器错误403,mac下配置nginx报403错误的解决方法

    今天在mac下配置nginx,一直提示403错误,虽然最终是解决了,过程各种苦逼,在这里记录下是怎么处理403报错的. 安装 通过brew命令安装:brew install nginx 配置 配置目录 ...

最新文章

  1. php值传递和java_Java的值传递和引用传递
  2. oracle php 配置,PHP + Oracle的配置
  3. oracle 10046详解
  4. 对于Mybatis在C#.Net中个人使用的总结(一) Mybatis 的结果映射
  5. ORACLE数据库在导入导出时序列不一致的问题
  6. 构建简单的微服务架构
  7. jzoj2755-[2012东莞市选]树的计数【dp,高精度】
  8. Android入门(五) | Activity 的生命周期
  9. oracle交流 提问,Oracle常见提问6(转)
  10. DWG转PDF在线转换怎么转?这个方法线上线下都能用
  11. vue根据身份证号算出年龄
  12. 图片在线裁剪和图片上传总结
  13. PID控制器、试凑法整定
  14. Revit空闲事件(Idling Event)增强和外部事件(External Event)
  15. 音质好的蓝牙耳机有哪几款?公认音质好的蓝牙耳机
  16. java matcher.group_详解正则表达式Matcher类中group方法
  17. Android 高德地图添加线段纹理
  18. Sublime Text使用技巧
  19. ubuntu linux0.12,ubuntu Linux 安装 jdk1.6.0_12和 Netbean 6.5
  20. 如何使用JS的排序函数sort()

热门文章

  1. 4.Git基础-查看提交历史
  2. [codevs1022]覆盖
  3. 勒索软件出新招,小心你的隐私和財产安全!
  4. falcon存储引擎入门(一)
  5. 事件源event.target
  6. PHP的方法重载实现
  7. 去掉ILDasm的SuppressIldasmAttribute限制
  8. Web前端优化最佳实践及工具集锦
  9. Windows 8开机时间
  10. 如何解决打开一个DBF数据表时出现的“Index not Found…”错误(摘)