tomcat版本: tomcat-8.0.29html
jdk版本: jdk1.8.0_65nginx
nginx版本: nginx-1.9.8web
cas版本: cas4.1.2
cas-client-3.4.1後端
參考來源:瀏覽器
CAS實現單點登陸(SSO)經典完整教程tomcat
cas客戶端應用實現cookie
使用 CAS 在 Tomcat 中實現單點登陸session
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; }
咱們清空瀏覽器的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"自動登錄。
CAS (5) —— Nginx代理模式下瀏覽器訪問CAS服務器配置詳解